OnMoueseMove Event

fujitsufan

Erfahrenes Mitglied
Hallo zusammen,

gerade bin ich dran ein ToolTip Fenster in meine Oberfläche einzubauen.
Dazu habe ich mit dem Klassenassistenen das Event "OnMouseMove" in meinem Dialog hinzugefügt, ging recht flott.
Im Header
C++:
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
Im Cpp
C++:
void CMainDialog::OnMouseMove(UINT nFlags, CPoint ptMsgPoint)
{
    POINT ptScreenPoint = ptMsgPoint;
    //ScreenToClient(&ptScreenPoint);
    m_toolTip.ShowToolTip((CPoint)ptScreenPoint);

    CDialog::OnMouseMove(nFlags, ptMsgPoint);
}
Als MessageMap Eintrag
C++:
ON_WM_MOUSEMOVE()
Doch leider werden in der OnMouseMove Funktion nur die Events signalisiert wenn die Maus über eine Group-Box geht.
Wenn der Mauszeiger über ein Button Steuerelement gleitet passiert nichts.

Dem Steuerelement habe ich bereits das Flag in den Eigenschaften "BS_NOTIFY" aktiviert.
C++:
PUSHBUTTON      "&Archiv",IDC_ARCHIVE_SETTINGS,548,365,44,15,BS_NOTIFY

Woran kann dies liegen?

MfG.
Fujitsufan
 

Endurion

Erfahrenes Mitglied
Die Tooltips sind eigentlich selbst pflegend. Ein ToolTip kann sich selbst um mehrere Controls kümmern.

D.h. du erstellst ein CToolTip, mit AddTool trägst du ein Control ein (samt Text) und mit Activate stellst du sicher, dass es auch aufpoppen darf.

Evtl. musst du in PreTranslateMsg die Methode CToolTipCtrl::RelayEvent aufrufen, damit die Maus-Nachrichten durchgereicht werden.
 

fujitsufan

Erfahrenes Mitglied
Hallo Endurion,
erst mal vielen Dank für deine Hilfe.

Die Methode "AddTool" gibt es in meiner CToolTip Klasse leider nicht.
Ich habe dann die "AddControlInfo" Methode verwendet.
C++:
//ToolTip
    CStringArray strToolTipText;
    strToolTipText.Add("Archiveinstellungen");
    strToolTipText.Add("Bitte hier klicken");
    m_toolTip.Create(this);    // after creating, add the information
    m_toolTip.AddControlInfo(IDC_ARCHIVE_SETTINGS, strToolTipText, 149, 233);
    // control ID is of type UINT
    // information is of type CStringArray.
    // background_color and text_color are optional
Und wo finde ich "Activate "?
Ist das eine Methode der CToolTip Klasse oder ein Parameter den ich einstellen muss?

Vielen Dank nochmal.
MfG.
Fujitsufan
 

fujitsufan

Erfahrenes Mitglied
Hallo,

jetzt habe ich herausgefunden warum es die Methode "AddTool" in meiner Klasse nicht gibt.
Bei meinem Projekt handelt es sich nicht um die Klasse "CToolTipCtrl" aus der Standardbibliothek "afxcmn.h".
Jetzt habe ich die "CToolTipCtrl" Klasse implementiert.

Im Header:
C++:
CToolTipCtrl pToolTip;

Im Cpp:
C++:
CRect pRect;
CString strToolTipText = "";
char cTootTipText[256] = "Archiveinstellungen";
strToolTipText = "Archiveinstellungen";
GetDlgItem(IDC_ARCHIVE_SETTINGS)->GetWindowRect(pRect);
pToolTip.AddTool(&this->p_wnd, cTootTipText, pRect, IDC_ARCHIVE_SETTINGS);

Jetzt steht mir auch die Methode "AddTool" zur Verfügung.
Das Problem jetzt besteht darin, dass mir der erste Parameter (CWnd*) fehlt.
Bei meinem Projekt handelt es sich um ein ActiveX Control.
Da komme ich auf der Hauptseite nicht an den CWnd Handle dran.
Oder kann mir jemand sagen wie ich diesen ermitteln kann?

Vielen Dank!
Fujisufan
 

Neue Beiträge