Прошло много времени с тех пор, как я занимался любым программированием на WinAPI, но если мне не изменяет память ...
Вызов CreateWindowEx
передает hDlg
как hWndParent параметр, означающий, что диалоговое окно теперь является родителем всплывающей подсказки.
Из документации MSDN по функции DestroyWindow
говорится:
Если указаноОкно является родительским или владельцем окна, DestroyWindow автоматически уничтожает связанный дочерний или принадлежащий окна, когда он уничтожает родительское или владелец окна.Функция сначала уничтожает дочерние или собственные окна, а затем разрушает родительское или родительское окно.
Таким образом, вы можете предположить, что ваше окно всплывающей подсказки будет уничтожено со временем .Будьте осторожны, если вы звоните CreateToolTip
в ответ на каждое сообщение WM_HELP
, так как в результате вы получите несколько окон с подсказками, которые будут висеть в памяти, пока ваше диалоговое окно не будет закрыто и, наконец, не будет вызван DestroyWindow
.
Как указал vz0, вы можете создать всплывающую подсказку один раз, повесить на дескриптор окна, а затем показать подсказку в ответ на сообщение справки, а не создавать ее снова.
В своем комментарии к ответу vz0 вы сказали:
Есть несколько способов, которыми всплывающая подсказка может появиться.пример: движение мыши, тайм-аут и т. д.
Все это приводит только к тому, что окно скрыто, поэтому дескриптор подсказки все еще действителен и его можно снова отобразить с помощью ShowWindow
.