Zum Inhalt springen

Empfohlene Beiträge

  • 1 Monat später...
Geschrieben

Hallo,

dieser Thread ist schon etwas länger, aber ich hatte mich in der Zwischenzeit nicht mit dem Problem befasst.

Folgender Code funktioniert einwandfrei, um ein Kontextmenü über dem Button IDC_BUTTON1 anzeigen zu lassen:


	CMenu mnuPopupSubmit;

	mnuPopupSubmit.LoadMenu(IDR_CONSCONT);


	CButton *pButton;

	pButton = reinterpret_cast<CButton *>(GetDlgItem(IDC_BUTTON1));


	CRect rectSubmitButton;

	pButton->GetWindowRect(&rectSubmitButton);


	CMenu *mnuPopupMenu = mnuPopupSubmit.GetSubMenu(0);


	if( rectSubmitButton.PtInRect(point) ) // Since the user right-clicked the button, display the context menu

		mnuPopupSubmit.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);

Nun will ich denselben Effekt natürlich bei einem RichEdit-Feld erreichen. Der Code lautet:

CMenu mnuPopupSubmit;

	mnuPopupSubmit.LoadMenu(IDR_CONSCONT);


	CRichEditCtrl* pCtrl;

	pCtrl = (CRichEditCtrl*)GetDlgItem(IDC_CONSOLE);


	CRect rectSubmitButton;

	pCtrl->GetWindowRect(&rectSubmitButton);


	CMenu *mnuPopupMenu = mnuPopupSubmit.GetSubMenu(0);

	//ASSERT(mnuPopupMenu);


	// Find out if the user right-clicked the button

	// because we are interested only in the button

	if( rectSubmitButton.PtInRect(point) ) // Since the user right-clicked the button, display the context menu

	{	mnuPopupSubmit.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);


	}

Mein Problem ist folgendes:

Wenn ich ins RichEdit-Feld klicke, wird dieses markiert (I-Cursor erscheint und ich kann etwas ins RichEdit-Feld eintippen) und wenn der I-Cursor im Feld ist, kann kein Kontextmenü angezeigt werden.

Denselben Effekt habe ich auch, wenn ich ein "programmweites Kontextmenü", also eines das nicht auf einen bestimmten Bereich beschränkt ist, habe: es funktioniert überall, nur nicht im RichEdit-Feld.

An der Event-Mask kann es nicht liegen:

pCtrl = (CRichEditCtrl*)GetDlgItem(IDC_CONSOLE);

lMask = pCtrl->GetEventMask();

lMask |= ENM_CHANGE;

lMask |= ENM_KEYEVENTS;

lMask |= ENM_MOUSEEVENTS;

pCtrl->SetEventMask(lMask);

Wie kann ich dieses Problem lösen?

(Nochmal zum Ausgangsproblem: Text in RichEdit-Feld markiert, Rechtsklick soll Kontextmenü anzeigen. Markierung darf also nicht verloren gehen. Soll genauso funktionieren wie man das z.B. von Textverarbeitungsprogrammen kennt.)

Viele Grüße,

Technician

*hoffend*

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...