1
我的程序大量使用Windows內置氣球工具提示,但在某些系統上它們只是不顯示。這可能有很多不同的原因(例如:EnableBalloonTips,ShowInfoTip,DisablePreviewDesktop,TaskbarNoNotification都是可能會影響到的所有不同的註冊表項),它幾乎不可能在安裝期間更正這些設置。檢測氣球工具提示是否可見
所以我的選擇是簡單地測試氣球是否可見,如果沒有,顯示一條消息,他們應該聯繫支持。然而,我在工具提示(IsWindowVisible,GetActiveWindow等)的hWnd上使用的所有方法都返回了可見的氣球,即使在沒有的情況下也是如此。我懷疑這與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
我並不是故意說你會有錯誤。我的意思是某些函數的返回值可能表明它們的設置確實不允許氣球彈出。 –