Benutzer mit den meisten Antworten
Mehrzeiliges info Fenster

Frage
-
Hallo NG,
ich bräuchte paar Stichwörter um ein mehrzeiliges info Fenster in einer MFC Anwendung zu erstellen. Das Fenster solte sich abhängig von der Mauskoordinaten erscheinen an der Stelle wo gerade die Maus sich befindet und kurz stehen bleibt. Wenn Die Maus weiterbewegt wird, muss das Fenster sich schließen. CToolTipCtrl scheint für den Zweck ungeeignet sein. Geht das mit MFC ohne ein eigenes Fenster zu erstellen?
MfG,
KS
Konrad Schiemert
Antworten
-
Ja es geht ohne ein eigenes Fenster anlagen zu müssen.
https://msdn.microsoft.com/en-us/library/windows/desktop/hh298403%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
https://msdn.microsoft.com/en-us/library/8fdke98x.aspx
Man kann einfach bei einem CListCtrl sich das Tooltip control holen und bearbeiten (GetToolTips). Ansonsten benötigt man nur entsprechende TTN_NEEDTEXT Handler.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 17. Juni 2015 09:47
-
Danke für den Tipp. Ich habe wirklich nur ein einziges Picture Control für alle Bitmaps.
Inzwischen hat sich das Problem gelöst, weil hier im Haus eine HTML-Tooltip Klasse gibt (CWnd basiert), die ich verwenden kann. Na ja, wie Nokia sagt: Information ist alles.
MfG,
KS
Konrad Schiemert
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 10. Juni 2015 09:27
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 17. Juni 2015 09:47
Alle Antworten
-
Hallo Konrad Schiemert,
Es gibt noch die CMFCToolTipCtrl-Klasse , die sich für diesen Zweck eignet und mehrzeilige QuickInfo zulässt. Im folgenden Artikel gibt es ein Beispiel dafür:
How to Use CMFCToolTipCtrl Tooltips in a View for Dynamic Context Sensitive TipsGruß,
Dimitar
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Bearbeitet Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 10. Juni 2015 07:37 Name der Klasse
-
Hallo Konrad Schiemert,
deiner Beschreibung nach willst Du genau das machen wofür es CToolTipCtrl gibt. Wo liegt denn das Problem?
Für mehrzeiliges muss man wohl immer noch die Breite setzen "SetMaxTipWidth", müsste aber auch in der Doku stehen.Gruß
- Florian
-
Ja es geht ohne ein eigenes Fenster anlagen zu müssen.
https://msdn.microsoft.com/en-us/library/windows/desktop/hh298403%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
https://msdn.microsoft.com/en-us/library/8fdke98x.aspx
Man kann einfach bei einem CListCtrl sich das Tooltip control holen und bearbeiten (GetToolTips). Ansonsten benötigt man nur entsprechende TTN_NEEDTEXT Handler.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 17. Juni 2015 09:47
-
Hallo Florian, hallo Martin,
ich habe ein Picture Control mit jede Menge Bitmaps. Wenn die Maus über einen Bitmap stehen bleibt (bzw. sich ganz langsam über den Bitmaps bewegt), muss ich in einem Fenster Informationen über den aktuellen Bitmap (bzw. über den gerade durchgefahrenen Bitmap) anzeigen. Das Fenster muss immer am Bitmap geöffnet werden und natürlich geschlossen werden, wenn die Maus auf keinen Bitmap zeigt oder weiterfährt. Ich brauche also ein bewegliches Fenster mit immer aktualisiertem Inhalt.
Ich habe den Beispielcode von Dimitar getestet, der zeigt den Tooltip an der beliebigen Mausposition nur dann an, wenn die Maus das Fenster verlässt und wieder ins Fenster eintritt.
Ich denke, dass mit einem eigenen Fenster ich die Anforderung besser erfüllen kann. Oder ist meine Einschätzung falsch?
MfG und danke für den Tipps,
KS
Konrad Schiemert
-
Hallo Konrad Schiemert,
du hast also ein PictureControl? Nicht für jedes Bitmap eines?
Grundsätzlich kannst Du einfach neue Tools in deinem CToolTipCtrl anlegen und über deren rechteckige Bereich, per Hittest feststellen ob der Mauszeiger innerhalb dieses Rechteckes ist. Für jedes deiner Bitmaps (oder für das Control in dem das Bild angezeigt wird) muss ein eigenes Tool im Tooltipctrl hinterlegt werden.
Die Beschreibung in der MSDN Library: Verwenden von CToolTipCtrl zum Erstellen und Bearbeiten eines CToolTipCtrl-ObjektsZur von Dimitar empfohlenen CMFCToolTip-Klasse kann ich nichts sagen.
Habe bisher immer nur CToolTipCtrl oder eine davon abgeleitete Klasse in unseren MFC-Projekten verwendet um ToolTips anzuzeigen.Gruß
- Florian
-
Danke für den Tipp. Ich habe wirklich nur ein einziges Picture Control für alle Bitmaps.
Inzwischen hat sich das Problem gelöst, weil hier im Haus eine HTML-Tooltip Klasse gibt (CWnd basiert), die ich verwenden kann. Na ja, wie Nokia sagt: Information ist alles.
MfG,
KS
Konrad Schiemert
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 10. Juni 2015 09:27
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 17. Juni 2015 09:47