J’utilise la fonction de MSDN Créer une info-bulle pour un contrôle
HWND CreateToolTip(int toolID, HINSTANCE hInst, HWND hDlg, PTSTR pszText) { if (!toolID || !hDlg || !pszText) { return FALSE; } HWND hwndTool = GetDlgItem(hDlg, toolID); HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, WS_POPUP |TTS_ALWAYSTIP | TTS_BALLOON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hDlg, NULL, hInst, NULL); if (!hwndTool || !hwndTip) { return (HWND)NULL; } TOOLINFO toolInfo; toolInfo.cbSize = sizeof(toolInfo); toolInfo.hwnd = hDlg; toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS; toolInfo.uId = (UINT_PTR)hwndTool; toolInfo.lpszText = pszText; SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo); return hwndTip; }
Puis, dans WndProc
WM_CREATE
je crée un bouton Button=CreateWindowEx( 0, L"BUTTON", L"My Button", WS_VISIBLE|WS_CHILD, 10, 10, 100, 24, hWnd, (HMENU)ID_TOOLTIP, hInst, NULL);
Enfin, créez une info-bulle tooltip_mess = CreateToolTip(ID_TOOLTIP, hInst, hWnd, (PTSTR)"Tooltip message");
Mais cela ne fonctionne pas, je ne peux pas voir mon info-bulle, où je me suis trompé?
Essayez ceci à la place:
HWND CreateToolTip(int toolID, HWND hDlg, HINSTANCE hInst, PTSTR pszText) { if (!toolID || !hDlg || !pszText) { return NULL; } // Get the window of the tool. HWND hwndTool = GetDlgItem(hDlg, toolID); if (!hwndTool) { return NULL; } // Create the tooltip. g_hInst is the global instance handle. HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, WS_POPUP |TTS_ALWAYSTIP | TTS_BALLOON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hDlg, NULL, hInst, NULL); if (!hwndTip) { return NULL; } // Associate the tooltip with the tool. TOOLINFO toolInfo = { 0 }; toolInfo.cbSize = sizeof(toolInfo); toolInfo.hwnd = hDlg; toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS; toolInfo.uId = (UINT_PTR)hwndTool; toolInfo.lpszText = pszText; if (!SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo)) { DestroyWindow(hwndTip); return NULL; } return hwndTip; }
case WM_CREATE: { Button = CreateWindowEx( 0, L"BUTTON", L"My Button", WS_VISIBLE|WS_CHILD, 10, 10, 100, 24, hWnd, (HMENU)ID_TOOLTIP, hInst, NULL); tooltip_mess = CreateToolTip(ID_TOOLTIP, hWnd, hInst, L"Tooltip message"); break; }
if (tooltip_mess) SendMessage(tooltip_mess, TTM_ACTIVATE, TRUE, 0);
if (tooltip_mess) SendMessage(tooltip_mess, TTM_ACTIVATE, FALSE, 0);