Почему FindWindowEx не находит класс всплывающей подсказки - PullRequest
0 голосов
/ 03 июля 2019

Мне нужно удалить окно всплывающей подсказки, созданное для элементов управления, которые будут удалены, пока основное окно остается рядом.Я пришел с тем, что ниже, но он не находит никаких окон TOOLTIPS_CLASS.Любая причина почему?

TIA !!

  for (HWND hwndtip=NULL; (hwndtip=FindWindowEx(hwnd, hwndtip, TOOLTIPS_CLASS, NULL))!=NULL;) {
    // check if it has the control id we want
    TOOLINFO toolinfo ={ 0 };
    toolinfo.cbSize = sizeof(toolinfo);
    toolinfo.hwnd = hwnd;
    toolinfo.uFlags = TTF_IDISHWND;
    toolinfo.uId = (UINT_PTR)hwndctl;
    if (SendMessage(hwndtip, TTM_GETTOOLINFO, 0, (LPARAM)&toolinfo)) {
      // found tooltip to delete
      DestroyWindow(hwndtip);
      result=TRUE;
      break;
    }
  }

1 Ответ

0 голосов
/ 03 июля 2019

Хорошо, я нашел способ, который не дает сбой другим вещам, отправляя TTM_GETTOOLINFO каждому найденному окну всплывающей подсказки. В основном, дайте имя вашему созданному окну всплывающей подсказки. Пример, _T ("MINE !!") Затем, чтобы найти его:

for (HWND hwndtip=NULL; (hwndtip=FindWindowEx(NULL, hwndtip, TOOLTIPS_CLASS, _T("MINE!!")))!=NULL;) {
    // check if it has the control id we want
    TOOLINFO toolinfo ={ 0 };
    toolinfo.cbSize = sizeof(toolinfo);
    toolinfo.hwnd = hwnd;
    toolinfo.uFlags = TTF_IDISHWND;
    toolinfo.uId = (UINT_PTR)hwndctl;
    if (SendMessage(hwndtip, TTM_GETTOOLINFO, 0, (LPARAM)&toolinfo)) {
      // found tooltip to delete
      DestroyWindow(hwndtip);
      result=TRUE;
      break;
    }
  }
...