Möchte den Cursor im Kontextmenu ändern
-
Hallo.
Habe ein MFC SDI Programm geschrieben dessen Ansicht von CrichEditView erbt.
Im Ansichtsfenster habe ich einen Text-Cursor(sieht aus wie eine Römische eins) .
Wenn ich nun mit einem Rechtsklick ein Kontextmenu öffne bleibt der Cursor ein Text-Cursor.
Ich habe mal bei Word nachgesehen und da wir bei einem Rechtsklick aus dem Text-Cursor ein normaler Pfeil-Cursor solange das Kontextmenu geöffnet ist.Nun meine Frage.
Wie kann ich den Cursor im Kontextmenu verändern?
hal_ibm
-
Menüs sind eine eigene Fensterklasse, die immer einen Pfeilcursor haben. Hast Du evtl. selbst mit WM_SETCURSOR Experimente gemacht? Oder einen Hook installiert?
-
Hallo Martin Richter.
Nein habe ich nicht.
Habe weder einen Hook installiert. Weiss gar nicht was ein Hook ist.
Habe nichts mit WM_SETCURSOR gemacht.
Meine Ansicht erbt wie schon geschrieben von CRichEditView und hier ist der Code für mein Popup.void CMyZettelView::OnRButtonDown(UINT nFlags, CPoint point)
{
ClientToScreen(&point);
CMenu menu;
menu.LoadMenu(IDR_MENU1);menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
point.x, point.y, this);CRichEditView::OnRButtonDown(nFlags, point);
}Hier ist nichts das irgendwas an dem Cursor verändert.
Als ich mit dem Programm angefangen habe hatte es von anfang an diesen Textcursor. Die Sache mit dem Popup kam erst später dazu und da ist mir das mit dem Cursor erst aufgefallen.
Ich habe nun mal folgendes in meine Ansichtsklasse eingefügt.void CMyZettelView::OnMouseMove(UINT nFlags, CPoint point)
{
::SetCursor(::LoadCursor(NULL, IDC_ARROW));
CRichEditView::OnMouseMove(nFlags, point);
}Wenn ich nun mein Programm starte ist in der Ansicht der Pfeilcursor zu sehen.
Wenn ich allerdings die rechte Maustaste klicke und das popup erscheint
wechselt der Cursor wieder zu einem Textcursor solange bis das popup-Menu
wieder verschwunden ist.hal_ibm
-
So werden keine Kontext Menüs angezeigt. Dazu wird WM_CONTEXTMENU überschrieben!
Durch Deine Methode wird nicht die Kontextmenü Taste behandelt.
Mach es mal auf die Methode, mal sehen was dann mit dem Cursor passiert.
-
Hallo Martin Richter .
Wie gesagt erbet meine Ansicht von CRichEditView und da funktioniert WM_CONTEXTMENU nicht. Du kannst mit dem Klassenassistenten die Methode zwar in dein Programm einfügen aber Sie funktioniert nicht. Habe es ausprobiert aber die Funktion wird einfach nicht aufgerufen wenn du die rechte Maustaste klickst.
Deshalb der umstand mit ClientToScreen(&point); und so.
Weshalb ich das so mache? Hier ein Link http://www.c-plusplus.net/forum/viewtopic-var-t-is-165257-and-highlight-is-.html
zu jemandem der die selben Probleme mit WM_CONTEXTMENU in einem CRichEditView hatte.hal_ibm