2010-12-16 3 views
0

Ich verwalte eine Win32-Desktop-Anwendung, die Tooltips anzeigt. Dies funktioniert bisher bei vielen XP- und Windows 7-Installationen sehr gut.Windows-Tooltips mit Stil TTS_BALLOON wird bei einigen Installationen nicht angezeigt

Wir erhalten jetzt Berichte von einigen Kunden, dass sie unsere Tooltipps nicht sehen. Der Rechteckige Tooltip (der das TTS_BALLOON Attribut nicht hat. Aber die mit TTS_BALLOON erstellten sind nicht sichtbar. Die von einem Kunden gesendeten Protokolldateien geben an, dass CreateWindowEx ein gültiges Windows-Handle sowie die enthaltenen Koordinaten und die Zeichenfolge zurückgibt. die Maschine besorgt läuft unter Windows XP und wird regelmäßig aktualisiert

Hat jemand ein ähnliches Verhalten aufgetreten

Wie können wir dieses Problem lösen

Source Code.?

gHintInfo.hwnd = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, 
          WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP | TTS_BALLOON, 
          CW_USEDEFAULT, CW_USEDEFAULT, 
          CW_USEDEFAULT, CW_USEDEFAULT, 
          NULL, NULL, 
          (HINSTANCE)xvt_vobj_get_attr(TASK_WIN, ATTR_WIN_INSTANCE), 
          NULL); 

Trace(1, "\n### DrawHint %d, hwnd = %08x, Text =\n%s\n###\n\n", __LINE__, gHintInfo.hwnd, tx); 

    if (gHintInfo.hwnd != NULL) 
    { 
     TOOLINFO ti; 
     ti.cbSize = sizeof (ti); 
     ti.uFlags = TTF_TRANSPARENT | TTF_ABSOLUTE; 
     ti.hwnd = hwndParent; 
     ti.uId = 0; 
     ti.hinst = NULL; 
     ti.lpszText = (char *) tx; 
     GetClientRect (hwndParent, &ti.rect); 

dbgrct(ti.rect); 
dbgpnt(gHintInfo.LastHintLoc); 

     SendMessage(gHintInfo.hwnd, TTM_TRACKPOSITION,0, MAKELONG(gHintInfo.LastHintLoc.v, gHintInfo.LastHintLoc.h));  
     SendMessage (gHintInfo.hwnd, TTM_ADDTOOL, 0, (long) &ti); 
     SendMessage (gHintInfo.hwnd, TTM_SETDELAYTIME, TTDT_AUTOMATIC, -1); 
     SendMessage (gHintInfo.hwnd, TTM_SETMAXTIPWIDTH, 0, 500);  
     SendMessage (gHintInfo.hwnd, TTM_TRACKACTIVATE, TRUE, (long) &ti); 
    } 

Die Protokollausgabe durch diesen Code auf der Maschine erstellt, die nicht die Tooltips nicht diesplay ist:

### DrawHint 474, hwnd = 00090112, Text = 
Some text with 
multiple lines 
### 

ti.rect left = 0, top = 0, right = 1280, bottom = 978 
gHintInfo.LastHintLoc h = 295, v = 539 

(Wir verweisen auf die Koordinaten optimiert des gesamten Bildschirms eingestellt ti.rect, wie Fenster die Werkzeugspitze passt die Größe an der darin enthaltene Text sowieso)

EDIT:. Wir haben tatsächlich eine Konfigurationseigenschaft zu unserer Software, die nichts tut mehr als das Hinzufügen oder das TTS_BALLOON Attribut zu entfernen. Dies löst das Problem auf den betroffenen Maschinen.

+1

ich nicht erinnern muss zugeben, aber tut XP zeigen Blase Stil Tooltips, wenn Sie nicht Luna mit (die Playskool Taskleiste/titlebuttons)? – Robert

+0

In der Tat würde ich fragen, welches Betriebssystem sie verwenden (Win 2k vielleicht?) Und ob sie visuelle Stile oder in Windows Classic ausgeführt werden. –

+0

@David: Es ist bereits in der Post: "Die betroffene Maschine läuft Windows XP und wird regelmäßig aktualisiert." –

Antwort

-1

Die beste Lösung finden Sie here.

den Tooltip Ballon zu deaktivieren, setzen EnableBalloonTips-1

+1

Das ist keine Lösung für das Problem. Es erfordert administrative Schritte, um die Sprechblasen zu deaktivieren. Die Frage war, warum auf einigen Maschinen Werkzeugoberteile NICHT funktionieren. –