На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
  
> ToolTip
    Дайте пример пожалуйста, как создать ToolTip для кнопки в диалоге.
      Уфф... Лень... В МСДН всё очень хорошо написано, я лично понял с первого раза  :D
        молодец! рад за тебя.
          Мой код - тултип для тулбара, но он понятен и легко переделать, тк кнопка - тоже окно.

          Принцип - создать окно, создать для него тултип, активизировать нук, а еще надо создать обработчик для хука.

          BOOL InitToolbar(void )
          {
              SIZE size;
              int iIndex ;
              TOOLINFO ti;    // tool information
              RECT rect ;

              if(!((*gpAvec).hMainToolBar = CreateToolbarEx(hMainWnd,
                      WS_VISIBLE|WS_CHILD|TBSTYLE_FLAT,
                      IDC_TOOLBAR,
                      BITMAP_COUNT,
                      hInst,
                      IDB_TOOLBAR,
                      gatbButton,
                      BUTTON_COUNT,
                      32, 32, 32, 32,
                      sizeof(TBBUTTON)) ) )
                        return FALSE ;

               (*gpAvec).dwButtonSize = SendMessage((*gpAvec).hMainToolBar,  
                           TB_GETBUTTONSIZE,  0, 0 ) + (*gpAvec).dwCYFRAME ;
               SendMessage((*gpAvec).hMainToolBar, TB_GETMAXSIZE, 0, (LPARAM)&size ) ;
               SetWindowPos((*gpAvec).hMainToolBar, HWND_TOP, 0, 0, size.cx, size.cy,  
                            SWP_SHOWWINDOW ) ;

               // создаем тултип и говорим, что он для тулбара      
               (*gpAvec).hMainToolTip = CreateWindowEx(0, TOOLTIPS_CLASS, "", WS_POPUP |  
                            TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT,  
                            CW_USEDEFAULT, CW_USEDEFAULT,  (*gpAvec).hMainToolBar, NULL, hInst,
                            NULL);

              if(!(*gpAvec).hMainToolTip )
               return FALSE ;

              // хук на мышку на тулбареЮ, где ToolTipMsgProc - обработчик
              (*gpAvec).hHook = SetWindowsHookEx(WH_MOUSE, ToolTipMsgProc, NULL,  
                        GetCurrentThreadId() );
              if ((*gpAvec).hHook == (HHOOK) NULL)
                     return FALSE;

              for (iIndex = 0; iIndex < BUTTON_COUNT; iIndex++)
              {
               if(gatbButton[iIndex].fsStyle == TBSTYLE_SEP )
                            continue ;
               SendMessage((*gpAvec).hMainToolBar, TB_GETITEMRECT, (WPARAM)iIndex,  
                             (LPARAM)&rect ) ;
               ZeroMemory(&ti, sizeof(TOOLINFO)) ;
               ti.cbSize = sizeof(TOOLINFO);
               ti.uFlags = 0 ;
               ti.hwnd = (*gpAvec).hMainToolBar;
               ti.hinst = hInst;
               ti.rect = rect ;
               ti.uId = gatbButton[iIndex].idCommand;
             
                      switch(gatbButton[iIndex].idCommand)
               {
                           case IDB_EXIT : ti.lpszText = (char*)IDM_EXIT ;
                           break ;
                    case IDB_STOP: ti.lpszText = (char*)IDM_STOP ;
                     break ;
                    case IDB_SCAN : ti.lpszText = (char*)IDM_SCAN ;
                     break ;
               }

               if (!SendMessage((*gpAvec).hMainToolTip, TTM_ADDTOOL, 0, (LPARAM)  
                            (LPTOOLINFO) &ti))
                     return FALSE ;
             }

             return TRUE;
          }

          // ToolTipMsgProc - monitors the message stream for mouse messages intended
          //     for a control window in the dialog box.
          // Returns a message-dependent value.
          // nCode - hook code.
          // wParam - message flag (not used).
          // lParam - address of an MSG structure.
          LRESULT CALLBACK ToolTipMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
          {
                if (nCode < 0 )
               return (CallNextHookEx((*gpAvec).hHook, nCode, wParam, lParam));

                switch(wParam )
                {
                      case WM_MOUSEMOVE:
                             if ((*gpAvec).hMainToolTip != NULL )
                             {
                                  MSG msg;
                           POINT Point ;

                                 msg.message = (UINT)wParam ;
                     msg.hwnd = ((MOUSEHOOKSTRUCT*)lParam)->hwnd ;

                     Point = ((MOUSEHOOKSTRUCT*)lParam)->pt ;
                     MapWindowPoints(HWND_DESKTOP, hMainWnd, &Point, 1) ;
                     
                                   msg.wParam = 0 ;
                     msg.lParam = MAKEWPARAM(Point.x, Point.y ) ;
                     msg.pt = Point ;
                     
                                  SendMessage((*gpAvec).hMainToolTip,                        
                                       TTM_RELAYEVENT, 0, (LPARAM) (LPMSG) &msg);            
                            }
                     break;
                 default:
                     break;
             }
           
             // ловим мышку на тулбаре дальше ?
             return (CallNextHookEx((*gpAvec).hHook, nCode, wParam, lParam));
          }
            cпа-си-бо.
              НЕ-ЗА-ЧТО, а то см MSDN и тд, а что это, где это ?  ;)
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0284 ]   [ 16 queries used ]   [ Generated: 3.05.24, 06:18 GMT ]