Почему не создается tooltip к кнопке
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.84] |
|
|
Правила раздела C/C++: Системное программирование и WinAPI
FAQ Сайта (C++)
FAQ Форума
Наши Исходники
Поиск по Разделу
MSDN Library Online (Windows Driver Kit)
Google
Почему не создается tooltip к кнопке
|
Сообщ.
#1
,
|
|
|
|
Добрый день!
В окне hMainWnd создаю кнопки (это работает, они отображаются). Я хочу прикрутить к каждой кнопке tooltip, однако он не создается. Не могли бы Вы подсказать, в чем ошибка ? Немного смущает то, что все это делается до начала цикла приема сообщений, а в конце видно, что направляется сообщение для активации tooltip-a. Насколько это правильно - направлять сообщение здесь ? Если неправильно, то где это сделать ? ![]() ![]() // создание кнопки HWND hButton = CreateWindow(L"BUTTON", b.Caption.c_str(), WS_VISIBLE | WS_CHILD, StartX, 0, ButtonWidth, 30, hMainWnd, ButtonID, hInst, NULL); // создание tooltip-a HWND hwndTool = GetDlgItem(hMainWnd, b.ButtonID); //hwndTool <> 0 => ошибки нет, // 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, hMainWnd, NULL, hInstance, NULL); //hwndTip <> 0 => ошибки нет, hwndTip создался нормально // Associate the tooltip with the tool. TOOLINFO toolInfo = { 0 }; toolInfo.cbSize = sizeof(toolInfo); toolInfo.hwnd = hMainWnd; toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS; toolInfo.uId = (UINT_PTR)hwndTool; toolInfo.lpszText = (LPWSTR) L"tool tip"; SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo); M Используем тег CODE! |
|
Сообщ.
#2
,
|
|
|
|
Цитата Lun2 @ Я хочу прикрутить к каждой кнопке tooltip, однако он не создается. я делал так: ![]() ![]() toolInfo.cbSize = sizeof(toolInfo); toolInfo.hwnd = hButton; toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS; toolInfo.uId = someID;//(UINT_PTR)hwndTool; не хэндл, а некий уникальный идентификатор toolInfo.lpszText = (LPWSTR) L"tool tip"; // vvv HINSTANCE hInstTT = ::GetModuleHandle(NULL); toolInfo.hinst = hInstTT; RECT rect; // GET COORDINATES OF THE MAIN CLIENT AREA ::GetClientRect (hButton, &rect); toolInfo.rect.left = rect.left; toolInfo.rect.top = rect.top; toolInfo.rect.right = rect.right; toolInfo.rect.bottom = rect.bottom; // ^^^ SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo); SendMessage(hwndTip, TTM_SETMAXTIPWIDTH, 0, MaxWidthTT); // у меня MaxWidthTT был по умолчанию 4096 И где-то раньше должен быть вызван "InitCommonControls". Иначе может "заглючить". |