Моя программа активно использует всплывающие подсказки для всплывающих окон Windows, но в какой-то системе они просто не отображаются. Это может иметь так много разных причин (например: EnableBalloonTips, ShowInfoTip, DisablePreviewDesktop, TaskbarNoNotification - все разные ключи реестра, которые могут иметь влияние), что почти невозможно исправить эти настройки во время установки.Обнаружение, если всплывает всплывающая подсказка
Таким образом, моя альтернатива заключалась в том, чтобы просто проверить, отображается ли воздушный шар, а если нет, отобразите сообщение, в котором им следует обратиться в службу поддержки. Однако все методы, которые я использую на hWnd всплывающей подсказки (IsWindowVisible, GetActiveWindow и т. Д.), Все возвращают, что воздушный шар видим даже в тех случаях, когда его нет. Я подозреваю, что это связано с тем, что Windows назначает hWnd родительскому шару, поэтому как я могу правильно проверить его отображение?
Public Sub Create(ByVal hWndParent As Long, _
Optional ByVal bAlwaysTip As Boolean = True, _
Optional ByVal bBalloonTip As Boolean = True)
Dim nFlags As Long
' Wir möchten kein normales Fenster :-)
nFlags = WS_POPUP Or TTS_NOPREFIX
' Falls der ToolTip auch bei deaktiviertem
' Control erscheinen soll...
If bAlwaysTip Then nFlags = nFlags Or TTS_ALWAYSTIP
' Falls ein "moderner" Balloon-ToolTip erwünscht...
If bBalloonTip Then nFlags = nFlags Or TTS_BALLOON
' Window-Handle erstellen
m_hWnd = CreateWindowEx(0, "tooltips_class32", 0, _
nFlags, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, _
CW_USEDEFAULT, hWndParent, 0, App.hInstance, 0)
' maximale Fensterbreite festlegen
SendMessageLong m_hWnd, TTM_SETMAXTIPWIDTH, 0, m_lMaxWidth
End Sub
Public Sub SetToolTipText(hWnd As Long, ByVal strText As String)
Dim udtToolInfo As TOOLINFO
With udtToolInfo
.hWnd = hWnd
.uId = hWnd
.lpszText = strText
.cbSize = Len(udtToolInfo)
End With
SendMessage m_hWnd, TTM_UPDATETIPTEXTA, 0, udtToolInfo
End Sub
Можете ли вы показать код, который вы используете для создания всплывающей подсказки? Возможно, создание звонков или отображение вызовов приведет к ошибке, на которую вы не обращаете внимания, это может быть полезно. –
@ PhoenixX_2 Только в очень небольшом проценте наших пользователей есть эта проблема, и изменение параметров реестра устраняет проблему в большинстве случаев, поэтому я считаю, что это исключает любые ошибки в коде. – Muis
Я не хотел сказать, что у вас будут ошибки. Я имел в виду, что возвращаемые значения определенных функций могут указывать на то, что их настройки не позволяют всплывать всплывающие подсказки. –