TTN_NEEDTEXTW получает дважды для одной всплывающей подсказки - PullRequest
0 голосов
/ 12 июля 2020

В моей программе есть кнопка подкласса:

Fhwnd = CreateWindowExW(NULL, L"Button", NULL, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_OWNERDRAW, X, Y, Width, Height, parentHwnd, (HMENU)ID, 0, 0);
SetWindowSubclass(Fhwnd, &MyButtonSubclassProc, 0, (DWORD_PTR)this);

Я добавляю всплывающую подсказку для этой кнопки со значением LPSTR_TEXTCALLBACKW:

toolInfo.lpszText = LPSTR_TEXTCALLBACKW;

И я заметил, что когда всплывающая подсказка всплывающие окна, OutputDebugString() печатается дважды (т.е. TTN_NEEDTEXTW встречается дважды):

case WM_NOTIFY:
{
    switch(((LPNMHDR)lParam)->code)
    {
        case TTN_NEEDTEXTW:
        {
        NMTTDISPINFOW *pTT = (NMTTDISPINFOW*)lParam;

            if(pTT->uFlags && TTF_IDISHWND)
            {
            pTT->lpszText = FTooltipText;
            OutputDebugStringW(L"TTN_NEEDTEXTW\r\n");
            break;
            }
        break;
        }
    }
break;
}

Я хочу спросить - это нормально?

Обновление: Даже если я настроил всплывающую подсказку для главного окна, TTN_NEEDTEXTW также появляется дважды.

case WM_CREATE:
{
HWND FTooltipHwnd = CreateWindowExW(NULL, TOOLTIPS_CLASS, NULL,
                                          WS_POPUP |TTS_ALWAYSTIP,
                                          CW_USEDEFAULT, CW_USEDEFAULT,
                                          CW_USEDEFAULT, CW_USEDEFAULT,
                                          hWnd, NULL, 
                                          hInst, NULL);

    if(FTooltipHwnd)
    {
    TOOLINFOW toolInfo = {0};
    toolInfo.cbSize = sizeof(TOOLINFOW);
    toolInfo.hwnd = hWnd;
    toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
    toolInfo.uId = (UINT_PTR)hWnd;
    toolInfo.lpszText = LPSTR_TEXTCALLBACKW;
    BOOL res = SendMessageW(FTooltipHwnd, TTM_ADDTOOLW, 0, (LPARAM)&toolInfo);
    }
}

Вроде нормально. Не правда ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...