Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.216.163] |
|
Сообщ.
#1
,
|
|
|
Дайте пример пожалуйста, как создать ToolTip для кнопки в диалоге.
|
Сообщ.
#2
,
|
|
|
Уфф... Лень... В МСДН всё очень хорошо написано, я лично понял с первого раза :D
|
Сообщ.
#3
,
|
|
|
молодец! рад за тебя.
|
Сообщ.
#4
,
|
|
|
Мой код - тултип для тулбара, но он понятен и легко переделать, тк кнопка - тоже окно.
Принцип - создать окно, создать для него тултип, активизировать нук, а еще надо создать обработчик для хука. 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)); } |
Сообщ.
#5
,
|
|
|
cпа-си-бо.
|
Сообщ.
#6
,
|
|
|
НЕ-ЗА-ЧТО, а то см MSDN и тд, а что это, где это ? ;)
|