Informationen zu QuickInfo-Steuerelementen

QuickInfos werden automatisch oder automatisch angezeigt, wenn der Benutzer den Mauszeiger auf ein Tool oder ein anderes UI-Element anhält. Die QuickInfo wird in der Nähe des Zeigers angezeigt und wird ausgeblendet, wenn der Benutzer auf eine Maustaste klickt, den Zeiger vom Tool weg bewegt oder einfach einige Sekunden wartet.

Das QuickInfo-Steuerelement in der folgenden Abbildung zeigt Informationen zu einer Datei auf dem Windows-Desktop an. Wenn Sie die Maus über die Abbildung bewegen, sollte auch eine Live-QuickInfo angezeigt werden, die beschreibenden Text enthält.

Screenshot: Text in einer QuickInfo, die über einer Datei auf dem Desktop angezeigt wird

In diesem Abschnitt wird beschrieben, wie QuickInfo-Steuerelemente funktionieren und wie Sie sie erstellen.

Verhalten und Darstellung von QuickInfos

QuickInfo-Steuerelemente können eine einzelne Textzeile oder mehrere Zeilen anzeigen. Ihre Ecken können abgerundet oder quadratisch sein. Sie können einen Stängel haben, der auf die Werkzeuge wie einen Cartoon-Sprechballon verweist. QuickInfo-Text kann stationär sein oder sich mit dem Mauszeiger bewegen, der als Nachverfolgung bezeichnet wird. Stationärer Text kann neben einem Tool oder über ein Tool angezeigt werden, das als direkt bezeichnet wird. Standard-QuickInfos sind stationär, zeigen eine einzelne Textzeile an, haben quadratische Ecken und keinen Stamm, der auf das Tool zeigt.

Nachverfolgungs-QuickInfos, 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 folgt, während er sich bewegt. Weitere Informationen zur Nachverfolgung von QuickInfos und ein Beispiel mit Code, der zeigt, wie Sie sie erstellen, finden Sie unter Tracking-QuickInfos.

Mehrzeilige 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 langwierige Nachrichten anzuzeigen. Weitere Informationen und ein Beispiel zum Erstellen von mehrziligen QuickInfos finden Sie unter Mehrline-QuickInfos.

Ballon-QuickInfos werden in einem Feld mit abgerundeten Ecken und einem Stamm angezeigt, der auf das Tool zeigt. Sie können entweder einzeilig oder mehrzeilig sein. Die folgende Abbildung zeigt eine Ballon-QuickInfo mit dem Stamm und rechteck an ihren Standardpositionen. Weitere Informationen zu Ballon-QuickInfos und ein Beispiel, das zeigt, wie sie erstellt werden, finden Sie unter Verwenden von QuickInfo-Steuerelementen.

Screenshot einer QuickInfo mit einer Textzeile, die sich über einer Schaltfläche in einem Dialogfeld befindet

Eine QuickInfo kann auch Titeltext und ein Symbol enthalten, wie in der folgenden Abbildung gezeigt. Beachten Sie, dass die QuickInfo Text enthalten muss. wenn sie nur Titeltext enthält, wird die QuickInfo nicht angezeigt. Außerdem wird das Symbol nur angezeigt, wenn ein Titel vorhanden ist.

Screenshot einer QuickInfo mit einem Symbol, Titel und Text, die sich unter einer Schaltfläche in einem Dialogfeld befinden

Manchmal werden Textzeichenfolgen abgeschnitten, weil sie zu lang sind, um vollständig in einem kleinen Fenster angezeigt zu werden. Direkte QuickInfos werden verwendet, um Textzeichenfolgen für Objekte anzuzeigen, die abgeschnitten wurden, z. B. den Dateinamen in der folgenden Abbildung. Ein Beispiel, das zeigt, wie Sie direkte QuickInfos erstellen, finden Sie unter Direkte QuickInfos.

Screenshot einer QuickInfo mit einem Dateinamen neben einem Dateisymbol in einem Struktursteuerelement

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 TOOLTIPS_CLASS Fensterklasse 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 Definieren. Andernfalls wird sie möglicherweise vom übergeordneten Fenster abgedeckt. 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 QuickInfofensters basiert auf der Höhe der Schriftart, die derzeit im Gerätekontext für das QuickInfo-Steuerelement ausgewählt ist. Die Breite variiert je nach Länge der Zeichenfolge, die sich derzeit im QuickInfo-Fenster befindet.

Aktivieren von QuickInfo-Steuerelementen

Ein QuickInfo-Steuerelement kann 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 bereitstellt, die das QuickInfo-Steuerelement benötigt, um Text für das Tool anzuzeigen. Das uID-Element der TOOLINFO-Struktur wird von der Anwendung definiert. Jedes Mal, wenn Sie ein Tool hinzufügen, stellt Ihre Anwendung einen eindeutigen Bezeichner bereit. Das cbSize-Element 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 Steuerungsfenster) und als rechteckige Bereiche im Clientbereich eines Fensters implementiert sind. Wenn Sie ein Als rechteckiger Bereich implementiertes Tool hinzufügen, muss das hwnd-Element der TOOLINFO-Struktur den Handle für das Fenster angeben, das den Bereich enthält, und das Rechteckelement muss die Clientkoordinaten des umgebenden Rechtecks des Bereichs angeben. Darüber hinaus muss der uID-Member den anwendungsdefinierte Bezeichner für das Tool angeben.

Wenn Sie ein als Fenster implementiertes Tool hinzufügen, muss das uID-Element der TOOLINFO-Struktur das Fensterhandle zum Tool enthalten. Außerdem muss der uFlags-Member den TTF_IDISHWND-Wert angeben, der das QuickInfo-Steuerelement angibt, das uID-Element 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 Nachricht ändern.

Wenn das Wort der hohen Ordnung von lpszText 0 ist, muss das Wort mit niedriger Reihenfolge der Bezeichner einer Zeichenfolgenressource sein. Wenn das QuickInfo-Steuerelement den Text benötigt, lädt das System die angegebene Zeichenfolgenressource aus der Anwendung instance durch den Hinweiselement der TOOLINFO-Struktur identifiziert.

Wenn Sie den LPSTR_TEXTCALLBACK-Wert im lpszText-Member 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 Fensterhandle sowie den anwendungsdefinierten Bezeichner für das Tool enthält. Das Fenster untersucht die Struktur, um das Tool zu ermitteln, für das Text benötigt wird, und füllt die entsprechenden Strukturmember mit Informationen, 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 . Mehrline-QuickInfotext kann länger sein.

 

Viele Anwendungen erstellen Symbolleisten mit Tools, die Menübefehlen entsprechen. Für solche Tools ist es praktisch, dass das QuickInfo-Steuerelement denselben Text wie das entsprechende Menüelement anzeigt. Das System entfernt automatisch die Beschleunigerzeichen amper und (&) aus allen Zeichenfolgen, die an ein QuickInfo-Steuerelement übergeben werden, und beendet die Zeichenfolge am ersten Registerkartenzeichen (\t), es sei denn, das Steuerelement verfügt über die TTS_NOPREFIX Formatvorlage.

Um den Text für ein Tool abzurufen, verwenden Sie die TTM_GETTEXT Nachricht.

Messaging und Benachrichtigung

QuickInfotext wird normalerweise angezeigt, wenn der Mauszeiger über einen Bereich bewegt wird, in der Regel das Rechteck, das von einem Tool wie einem Schaltflächensteuerelement definiert wird. Microsoft Windows sendet jedoch nur mausbezogene Nachrichten an das Fenster, das den Zeiger enthält, nicht an das QuickInfo-Steuerelement selbst. Mausbezogene Informationen müssen an das QuickInfo-Steuerelement weitergeleitet werden, damit es den QuickInfotext zum geeigneten Zeitpunkt und an der entsprechenden Stelle anzeigen kann.

Nachrichten können automatisch weitergeleitet werden, wenn:

  • Das Tool ist ein Steuerelement oder ist 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 flag TTF_SUBCLASS im uFlags-Element der TOOLINFO-Struktur des Tools fest, wenn Sie das Tool dem QuickInfo-Steuerelement mit TTM_ADDTOOL hinzufügen. Die erforderlichen Mausnachrichten werden dann automatisch an das QuickInfo-Steuerelement weitergeleitet.

Das Festlegen TTF_SUBCLASS , dass Mausnachrichten an das Steuerelement weitergeleitet werden sollen, reicht für die meisten Zwecke aus. 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 ist, empfängt die Fensterprozedur die Mausmeldungen. Das Festlegen TTF_SUBCLASS reicht aus, um sicherzustellen, dass sie an das Steuerelement übergeben werden. Wenn ein Tool jedoch als systemdefiniertes Fenster implementiert ist, werden Mausnachrichten an dieses Fenster gesendet und stehen der Anwendung nicht direkt zur Verfügung. In diesem Fall müssen Sie entweder das Fenster unterklassen oder einen Nachrichtenhaken verwenden, um auf die Mausnachrichten zuzugreifen. Anschließend müssen Sie Mausnachrichten explizit mit TTM_RELAYEVENT an das QuickInfo-Steuerelement weiterleiten. Ein Beispiel für die Verwendung von TTM_RELAYEVENT finden Sie unter Tracking-QuickInfos.

Wenn ein QuickInfo-Steuerelement eine WM_MOUSEMOVE-Nachricht empfängt, bestimmt es, ob sich der Mauszeiger im umgebenden Rechteck eines Tools befindet. Wenn dies der Grund ist, legt das QuickInfo-Steuerelement einen Timer fest. Am Ende des Timeoutintervalls ü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 weiterhin an, bis es eine Weiterleitungsnachricht nach oben oder schaltflächenab empfängt oder bis eine WM_MOUSEMOVE Meldung angibt, dass sich der Zeiger außerhalb des umgebenden Rechtecks des Tools verschoben hat.

Einem QuickInfo-Steuerelement sind tatsächlich drei Timeoutdauern zugeordnet. Die anfängliche Dauer ist die Zeit, zu der der Mauszeiger innerhalb des umgebenden Rechtecks eines Tools stehen muss, bevor das QuickInfofenster angezeigt wird. Die Dauer der erneuten Anzeige ist die Länge der Verzögerung, bevor nachfolgende QuickInfofenster angezeigt werden, wenn der Zeiger von einem Tool zum anderen wechselt. Die Popupdauer ist die Zeit, in der das QuickInfo-Fenster angezeigt wird, bevor es ausgeblendet wird. Das heißt, wenn der Zeiger innerhalb des umgebenden Rechtecks bleibt, nachdem das QuickInfo-Fenster angezeigt wird, wird das QuickInfo-Fenster am Ende der Popupdauer automatisch ausgeblendet. Sie können alle Timeoutdauern mithilfe der TTM_SETDELAYTIME-Nachricht anpassen.

Wenn eine Anwendung ein als rechteckiger Bereich implementiertes Tool enthält 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 als Fenster implementiertes Tool melden, da das QuickInfo-Steuerelement das Fensterhandle des Tools verwendet, um zu bestimmen, ob sich der Mauszeiger auf dem Tool befindet, nicht das umgebende Rechteck des Tools.

Wenn eine QuickInfo angezeigt werden soll, sendet das QuickInfo-Steuerelement dem Besitzerfenster einen TTN_SHOW Benachrichtigungscode. Das Besitzerfenster erhält einen TTN_POP Benachrichtigungscode, wenn eine QuickInfo ausgeblendet werden soll. Jeder Benachrichtigungscode wird im Kontext einer WM_NOTIFY Nachricht gesendet.

Treffertests

Mit der TTM_HITTEST Meldung können Sie Informationen abrufen, die ein QuickInfo-Steuerelement über das Tool verwaltet, das einen bestimmten Punkt belegt. 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, falls dies der Fall ist, TOOLINFO mit Informationen zum Tool.

Standardnachrichtenverarbeitung

In der folgenden Tabelle werden die Nachrichten beschrieben, die von der Fensterprozedur für das QuickInfo-Steuerelement verarbeitet werden.

`Message` BESCHREIBUNG
WM_CREATE Stellt sicher, dass das QuickInfo-Steuerelement über die WS_EX_TOOLWINDOW - und WS_POPUP Fensterstile verfügt. Außerdem werden Arbeitsspeicher zugewiesen und interne Variablen initialisiert.
WM_DESTROY Gibt Ressourcen frei, die für das QuickInfo-Steuerelement zugewiesen sind.
WM_GETFONT Gibt den Handle der Schriftart zurück, die das QuickInfo-Steuerelement zum Zeichnen von Text verwendet.
WM_MOUSEMOVE Blendet das QuickInfofenster aus.
WM_PAINT Zeichnet das QuickInfofenster.
WM_SETFONT Legt den Handle der Schriftart fest, die das QuickInfo-Steuerelement zum Zeichnen von Text verwendet.
WM_TIMER Blendet das QuickInfo-Fenster aus, wenn das Tool die Position geändert hat oder wenn der Mauszeiger außerhalb des Tools verschoben wurde. Andernfalls wird das QuickInfo-Fenster angezeigt.
WM_WININICHANGE Setzt interne Variablen zurück, die auf Systemmetriken basieren.