2013-08-20 3 views
1

내 프로그램은 윈도우 빌드 - 풍선 툴팁을 많이 사용하게하지만, 일부 시스템에서 그들은 단지 표시되지 않습니다 볼 경우 감지. 이것은 매우 다양한 원인을 가질 수 있습니다 (예 : EnableBalloonTips, ShowInfoTip, DisablePreviewDesktop, TaskbarNoNotification은 모두 영향을 미칠 수있는 다른 레지스트리 키입니다). 설치 중에 해당 설정을 수정할 가능성이 거의 없습니다.풍선 툴팁

그래서 대안은 단순히 풍선이 보이는지 테스트하고 그렇지 않은 경우 지원 담당자에게 연락해야한다는 메시지를 표시하는 것입니다. 그러나 도구 설명 (IsWindowVisible, GetActiveWindow 등)의 hWnd에 사용하는 모든 메서드는 풍선이 보이지 않는 경우에도 풍선이 표시되도록 반환합니다. 나는 이것이 부모의 hWnd를 풍선에 할당하는 Windows와 관련이 있다고 의심하기 때문에 실제로 어떻게 올바르게 표시되는지 확인할 수 있습니까?

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 
+2

툴팁을 작성하는 데 사용하는 코드 중 일부를 표시 할 수 있습니까? 아마도 전화를하거나 전화를 걸면 아마도 당신이주의를 기울이지 않는 오류가 생길 수 있습니다. –

+0

@ PhoenixX_2 아주 소수의 사용자 만이 문제를 겪고 있으며 대부분의 경우 레지스트리 설정을 변경하면 문제가 해결되므로 코드의 오류는 제외됩니다. – Muis

+0

나는 당신이 실수를했다고 말하지는 않았다. 특정 함수의 반환 값은 풍선 설정이 실제로 팝업을 허용하지 않음을 나타낼 수 있습니다. –

답변

0

실제로 응용 프로그램에 영향을 미치는 레지스트리 키를 분리하고 적절하게 변경해야합니다. 그것이 당신이 지원을 통해 끝내는 것이라면, 아마도 강제적으로 변경을하는 것이 당연합니다.

하지만 더 나은 아이디어는 응용 프로그램에 직접 적용되는 고유 한 창을 만드는 것처럼 자신의 솔루션을 작성하는 것입니다. 그것은 당신에게 당신이 항상 달려들지 않고도 원하는 파워를 줄 것입니다.