Informationen zu QuickInfo-Steuerelementen
QuickInfos werden automatisch angezeigt oder werden angezeigt, wenn der Benutzer den Mauszeiger über ein Tool oder ein anderes Benutzeroberflächenelement hält. Die QuickInfo wird in der Nähe des Zeigers angezeigt und verschwindet, wenn der Benutzer auf eine Maustaste klickt, den Mauszeiger vom Tool entfernt oder einfach einige Sekunden wartet.
Das QuickInfo-Steuerelement in der folgenden Abbildung zeigt Informationen zu einer Datei auf dem Windows an. Wenn Sie den Mauszeiger über die Abbildung bewegen, sollte auch eine Live-QuickInfo angezeigt werden, die beschreibenden Text enthält.

In diesem Abschnitt wird beschrieben, wie QuickInfo-Steuerelemente funktionieren und wie Sie sie erstellen.
- QuickInfo-Verhalten und -Darstellung
- Erstellen von QuickInfo-Steuerelementen
- Aktivieren von QuickInfo-Steuerelementen
- Unterstützende Tools
- Anzeigen von Text
- Messaging und Benachrichtigung
- Treffertests
- Standardnachrichtenverarbeitung
QuickInfo-Verhalten und -Darstellung
QuickInfo-Steuerelemente können eine einzelne Textzeile oder mehrere Zeilen anzeigen. Ihre Ecken können abgerundet oder quadratisch sein. Möglicherweise verfügen sie über einen Stamm, der auf die Tools zeigt, z. B. einen Sprachsprechblasen. QuickInfo-Text kann stationär sein oder sich mit dem Mauszeiger bewegen, der als Nachverfolgung bezeichnet wird. Feststehender Text kann neben einem Tool oder über einem Tool angezeigt werden, das als direkt bezeichnet wird. Standard-QuickInfos sind stationär, zeigen eine einzelne Textzeile an, weisen quadratische Ecken auf und weisen keinen Stamm auf das Tool hin.
QuickInfos zur Nachverfolgung, die von Version 4.70 der allgemeinen Steuerelemente unterstützt werden, ändern die Position auf dem Bildschirm dynamisch. Durch schnelles Aktualisieren der Position scheinen sich diese QuickInfo-Steuerelemente reibungslos zu bewegen oder "nachverfolgen". Diese sind nützlich, wenn QuickInfo-Text der Position des Mauszeigers folgen soll, während er bewegt wird. Weitere Informationen zum Nachverfolgen von QuickInfos und ein Beispiel mit Code, der zeigt, wie Sie sie erstellen, finden Sie unter Tracking Tooltips.
Mehrzeilen-QuickInfos, die auch von Version 4.70 der allgemeinen Steuerelemente unterstützt werden, zeigen Text in mehr als einer Zeile an. Diese sind nützlich, um lange Meldungen anzuzeigen. Weitere Informationen und ein Beispiel zum Erstellen von mehrstufigen QuickInfos finden Sie unter QuickInfos für mehrere Linien.
QuickInfos für Sprechblasen werden in einem Feld mit abgerundeten Ecken und einem Stamm angezeigt, der auf das Tool zeigt. Sie können entweder ein- oder mehrzeilenig sein. Die folgende Abbildung zeigt eine QuickInfo für den Sprechblasen, in der sich der Stamm und das Rechteck an ihren Standardpositionen befinden. Weitere Informationen zu QuickInfos für Sprechblasen und ein Beispiel für deren Erstellung finden Sie unter Verwenden von QuickInfo-Steuerelementen.

Eine QuickInfo kann auch Titeltext und ein Symbol enthalten, wie in der folgenden Abbildung dargestellt. Beachten Sie, dass die QuickInfo Text enthalten muss. Wenn nur Titeltext enthalten ist, wird die QuickInfo nicht angezeigt. Außerdem wird das Symbol nur angezeigt, wenn ein Titel vor liegt.

Manchmal werden Textzeichenfolgen abgeschnitten, da sie zu lang sind, um vollständig in einem kleinen Fenster angezeigt zu werden. QuickInfos werden verwendet, um Textzeichenfolgen für Objekte anzuzeigen, die abgeschnitten wurden, z. B. den Dateinamen in der folgenden Abbildung. Ein Beispiel zum Erstellen von quickInfos finden Sie unter In-Place Tooltips.

Der Cursor muss für einen bestimmten Zeitraum auf ein Tool zeigen, bevor die QuickInfo angezeigt wird. Die Standarddauer dieses Timeouts wird durch die Doppelklickzeit des Benutzers gesteuert und beträgt in der Regel etwa eine halbe Sekunde. Um einen nicht standardmäßigen Timeoutwert anzugeben, senden Sie dem QuickInfo-Steuerelement eine TTM _ SETDELAYTIME-Nachricht.
Erstellen von QuickInfo-Steuerelementen
Um ein QuickInfo-Steuerelement zu erstellen, rufen Sie CreateWindowEx auf, und geben Sie die Fensterklasse TOOLTIPS _ CLASS an. Diese Klasse wird registriert, wenn die allgemeine Steuerelement-DLL geladen wird. Um sicherzustellen, dass diese DLL geladen wird, schließen Sie die InitCommonControlsEx-Funktion in Ihre Anwendung ein. Sie müssen ein QuickInfo-Steuerelement explizit als oberstes Steuerelement definieren. Andernfalls kann es durch das übergeordnete Fenster abgedeckt werden. Das folgende Codefragment zeigt, wie Sie ein QuickInfo-Steuerelement erstellen.
HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,
WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
hwndParent, NULL, hinstMyDll,
NULL);
SetWindowPos(hwndTip, HWND_TOPMOST,0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
Die Fensterprozedur für das QuickInfo-Steuerelement legt automatisch die Größe, Position und Sichtbarkeit des Steuerelements fest. Die Höhe des QuickInfo-Fensters basiert auf der Höhe der Schriftart, die derzeit im Gerätekontext für das QuickInfo-Steuerelement ausgewählt ist. Die Breite variiert abhängig von der Länge der Zeichenfolge, die sich derzeit im QuickInfo-Fenster befindet.
Aktivieren von QuickInfo-Steuerelementen
Ein QuickInfo-Steuerelement kann entweder aktiv oder inaktiv sein. Wenn er aktiv ist, wird der QuickInfo-Text angezeigt, wenn sich der Mauszeiger auf einem Tool befindet. Wenn er inaktiv ist, wird der QuickInfo-Text nicht angezeigt, auch wenn sich der Zeiger auf einem Tool befindet. Die TTM _ ACTIVATE-Meldung aktiviert und deaktiviert ein QuickInfo-Steuerelement.
Unterstützende Tools
Ein QuickInfo-Steuerelement kann eine beliebige Anzahl von Tools unterstützen. Um ein bestimmtes Tool zu unterstützen, müssen Sie das Tool beim QuickInfo-Steuerelement registrieren, indem Sie dem Steuerelement die TTM _ ADDTOOL-Nachricht senden. Die Nachricht enthält die Adresse einer TOOLINFO-Struktur, die Informationen enthält, die das QuickInfo-Steuerelement benötigt, um Text für das Tool anzuzeigen. Der uID-Member der TOOLINFO-Struktur wird von der Anwendung definiert. Jedes Mal, wenn Sie ein Tool hinzufügen, stellt Ihre Anwendung einen eindeutigen Bezeichner zur Verfügung. Der cbSize-Member der TOOLINFO-Struktur ist erforderlich und muss die Größe der Struktur angeben.
Ein QuickInfo-Steuerelement unterstützt Tools, die als Fenster (z. B. untergeordnete Fenster oder Steuerfenster) und als rechteckige Bereiche innerhalb des Clientbereichs eines Fensters implementiert sind. Wenn Sie ein Tool hinzufügen, das als rechteckiger Bereich implementiert ist, muss das hwnd-Element der TOOLINFO-Struktur das Handle für das Fenster angeben, das den Bereich enthält, und das Rect-Element muss die Clientkoordinaten des umgebundenen Rechtecks des Bereichs angeben. Darüber hinaus muss der uID-Member den anwendungsdefinierten Bezeichner für das Tool angeben.
Wenn Sie ein als Fenster implementiertes Tool hinzufügen, muss das uID-Element der TOOLINFO-Struktur das Fensterhandle für das Tool enthalten. Außerdem muss das uFlags-Member den TTF _ IDISHWND-Wert angeben, der das QuickInfo-Steuerelement anleiten soll, das uID-Member als Fensterhandle zu interpretieren.
Anzeigen von Text
Wenn Sie einem QuickInfo-Steuerelement ein Tool hinzufügen, muss das lpszText-Element der TOOLINFO-Struktur die Adresse der Zeichenfolge angeben, die für das Tool angezeigt werden soll. Nachdem Sie ein Tool hinzugefügt haben, können Sie den Text mithilfe der TTM _ UPDATETIPTEXT-Meldung ändern.
Wenn das obere Wort von lpszText 0 (null) ist, muss das niedrige Wort der Bezeichner einer Zeichenfolgenressource sein. Wenn das QuickInfo-Steuerelement den Text benötigt, lädt das System die angegebene Zeichenfolgenressource aus der Anwendungsinstanz, die durch das einfachste Element der TOOLINFO-Struktur identifiziert wird.
Wenn Sie den LPSTR _ TEXTCALLBACK-Wert im lpszText-Element angeben, benachrichtigt das QuickInfo-Steuerelement das im hwnd-Element der TOOLINFO-Strukturangegebene Fenster, wenn das QuickInfo-Steuerelement Text für das Tool anzeigen muss. Das QuickInfo-Steuerelement sendet den TTN _ GETDISPINFO-Benachrichtigungscode an das Fenster. Die Nachricht enthält die Adresse einer NMTTDISPINFO-Struktur, die das Fensterhand handle sowie den anwendungsdefinierten Bezeichner für das Tool enthält. Das Fenster untersucht die -Struktur, um das Tool zu bestimmen, für das Text benötigt wird, und füllt die entsprechenden Strukturmitglieder mit Informationen auf, die das QuickInfo-Steuerelement benötigt, um die Zeichenfolge anzuzeigen.
Hinweis
Die maximale Länge für Standard-QuickInfo-Text beträgt 80 Zeichen. Weitere Informationen finden Sie in der NMTTDISPINFO-Struktur. Mehrzeilen-QuickInfo-Text kann länger sein.
Viele Anwendungen erstellen Symbolleisten mit Tools, die Menübefehlen entsprechen. Für solche Tools ist es für das QuickInfo-Steuerelement praktisch, den gleichen Text wie das entsprechende Menüelement anzuzeigen. Das System entfernt die Beschleunigerzeichen (&) automatisch aus allen Zeichenfolgen, die an ein QuickInfo-Steuerelement übergeben werden, und beendet die Zeichenfolge beim ersten Tabstoppzeichen ( t), es sei denn, das Steuerelement hat das \ TTS _ NOPREFIX-Format.
Verwenden Sie die TTM _ GETTEXT-Nachricht, um den Text für ein Tool abzurufen.
Messaging und Benachrichtigung
QuickInfo-Text wird normalerweise angezeigt, wenn der Mauszeiger auf einen Bereich zeigt, in der Regel das Rechteck, das von einem Tool wie einem Schaltflächensteuerfeld definiert wird. Microsoft Windows sendet jedoch nur mausbezogene Nachrichten an das Fenster, das den Zeiger enthält, und nicht an das QuickInfo-Steuerelement selbst. Mausbezogene Informationen müssen an das QuickInfo-Steuerelement übermittelt werden, damit der QuickInfo-Text zum richtigen Zeitpunkt und an der richtigen Stelle angezeigt wird.
Sie können nachrichten automatisch weiterleiten lassen, wenn:
- Das Tool ist ein Steuerelement oder als Rechteck in der TOOLINFO-Struktur des Tools definiert.
- Das dem Tool zugeordnete Fenster befindet sich im selben Thread wie das QuickInfo-Steuerelement.
Wenn diese beiden Bedingungen erfüllt sind, legen Sie das _ TTF-UNTERKLASSENflag im uFlags-Element der TOOLINFO-Struktur des Tools fest, wenn Sie das Tool dem QuickInfo-Steuerelement mit TTM _ ADDTOOL hinzufügen. Die erforderlichen Mausmeldungen werden dann automatisch an das QuickInfo-Steuerelement übermittelt.
Das Festlegen der _ TTF-UNTERKLASSE, damit Mausmeldungen an das Steuerelement übermittelt werden, ist für die meisten Zwecke ausreichend. Dies funktioniert jedoch nicht in Fällen, in denen keine direkte Verbindung zwischen dem QuickInfo-Steuerelement und dem Toolfenster besteht. Wenn ein Tool beispielsweise als rechteckiger Bereich in einem anwendungsdefiniertem Fenster implementiert wird, empfängt die Fensterprozedur die Mausnachrichten. Das Festlegen von TTF _ SUBCLASS ist ausreichend, um sicherzustellen, dass sie an das Steuerelement übergeben werden. Wenn ein Tool jedoch als systemdefiniertes Fenster implementiert wird, werden Mausnachrichten an dieses Fenster gesendet und sind für die Anwendung nicht direkt verfügbar. In diesem Fall müssen Sie entweder eine Unterklasse des Fensters erstellen oder einen Nachrichtenhook verwenden, um auf die Mausnachrichten zuzugreifen. Anschließend müssen Sie Mausnachrichten mit TTM _ RELAYEVENTexplizit an das QuickInfo-Steuerelement weiterleiten. Ein Beispiel für die Verwendung von TTM _ RELAYEVENT finden Sie unter Nachverfolgen von QuickInfos.
Wenn ein QuickInfo-Steuerelement eine WM _ MOUSEMOVE-Meldung empfängt, bestimmt es, ob sich der Mauszeiger im umschließenden Rechteck eines Tools befindet. Ist dies der Grund, legt das QuickInfo-Steuerelement einen Timer fest. Am Ende des Time out-Intervalls überprüft das QuickInfo-Steuerelement die Position des Zeigers, um festzustellen, ob er verschoben wurde. Andernfalls ruft das QuickInfo-Steuerelement den Text für das Tool ab und zeigt die QuickInfo an. Das QuickInfo-Steuerelement zeigt das Fenster so lange an, bis es eine weitergeleitete Schaltflächen-nach-oben- oder Schaltflächen-nach-unten-Meldung empfängt oder bis eine WM _ MOUSEMOVE-Meldung angibt, dass der Zeiger außerhalb des umschließenden Rechtecks des Tools verschoben wurde.
Einem QuickInfo-Steuerelement sind tatsächlich drei Time out-Zeiträume zugeordnet. Die anfängliche Dauer ist die Zeit, in der der Mauszeiger innerhalb des umschließenden Rechtecks eines Tools stationär bleiben muss, bevor das QuickInfo-Fenster angezeigt wird. Die Dauer der erneuten Anzeige ist die Länge der Verzögerung, bevor nachfolgende QuickInfo-Fenster angezeigt werden, wenn der Zeiger von einem Tool zu einem anderen bewegt wird. Die Popupdauer ist die Zeit, zu der das QuickInfo-Fenster angezeigt wird, bevor es ausgeblendet wird. Das heißt, wenn der Zeiger nach dem Anzeigen des QuickInfo-Fensters im umgebenden Rechteck stationär bleibt, wird das QuickInfo-Fenster am Ende der Popupdauer automatisch ausgeblendet. Sie können alle Time out-Zeiträume mithilfe der TTM _ SETDELAYTIME-Nachricht anpassen.
Wenn eine Anwendung ein Tool enthält, das als rechteckiger Bereich implementiert ist und sich die Größe oder Position des Steuerelements ändert, kann die Anwendung die TTM _ NEWTOOLRECT-Nachricht verwenden, um die Änderung an das QuickInfo-Steuerelement zu melden. Eine Anwendung muss keine Größen- und Positionsänderungen für ein Tool melden, das als Fenster implementiert ist, da das QuickInfo-Steuerelement das Fensterhandle des Tools verwendet, um zu bestimmen, ob sich der Mauszeiger auf dem Tool und nicht auf dem umschließenden Rechteck des Tools befindet.
Wenn eine QuickInfo angezeigt wird, sendet das QuickInfo-Steuerelement dem Besitzerfenster einen TTN _ SHOW-Benachrichtigungscode. Das Besitzerfenster empfängt einen TTN-POP-Benachrichtigungscode, _ wenn eine QuickInfo ausgeblendet wird. Jeder Benachrichtigungscode wird im Kontext einer WM _ NOTIFY-Nachricht gesendet.
Treffertests
Mit der TTM _ HITTEST-Nachricht können Sie Informationen abrufen, die ein QuickInfo-Steuerelement über das Tool beibehält, das einen bestimmten Punkt einnimmt. Die Nachricht enthält eine TTHITTESTINFO-Struktur, die ein Fensterhandle, die Koordinaten eines Punkts und die Adresse einer TOOLINFO-Struktur enthält. Das QuickInfo-Steuerelement bestimmt, ob ein Tool den Punkt einnimmt, und füllt toolINFO ggf. mit Informationen zum Tool aus.
Standardnachrichtenverarbeitung
In der folgenden Tabelle werden die Meldungen beschrieben, die von der Fensterprozedur für das QuickInfo-Steuerelement verarbeitet werden.
Message |
BESCHREIBUNG |
|---|---|
| WM _ CREATE | Stellt sicher, dass das QuickInfo-Steuerelement über die Fensterstile WS _ EX _ TOOLWINDOW und WS _ POPUP verfügt. Außerdem belegt er Arbeitsspeicher und initialisiert interne Variablen. |
| WM _ DESTROY | Gibt Ressourcen frei, die dem QuickInfo-Steuerelement zugeordnet sind. |
| WM _ GETFONT | Gibt das Handle der Schriftart zurück, die das QuickInfo-Steuerelement zum Zeichnen von Text verwendet. |
| WM _ MOUSEMOVE | Blendet das QuickInfo-Fenster aus. |
| WM _ PAINT | Zeichnet das QuickInfo-Fenster. |
| WM _ SETFONT | Legt das Handle der Schriftart fest, die das QuickInfo-Steuerelement zum Zeichnen von Text verwendet. |
| WM _ TIMER | Blendet das QuickInfo-Fenster aus, wenn sich die Position des Tools geändert hat oder der Mauszeiger außerhalb des Tools bewegt wurde. Andernfalls wird das QuickInfo-Fenster angezeigt. |
| WM _ WININICHANGE | Setzt interne Variablen zurück, die auf Systemmetriken basieren. |