Technician Geschrieben 29. März 2005 Geschrieben 29. März 2005 Hallo, ich möchte ein RichEdit-Feld mit einem Kontext-Menü versehen, und im RichEdit markierten Text herauskopieren können. Wie mache ich das? Gruß, Technician Zitieren
Guybrush Threepwood Geschrieben 29. März 2005 Geschrieben 29. März 2005 Sollte genauso gehen wie hier. Zitieren
Technician Geschrieben 27. Mai 2005 Autor Geschrieben 27. Mai 2005 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* Zitieren
Guybrush Threepwood Geschrieben 27. Mai 2005 Geschrieben 27. Mai 2005 Nagut dann hab ich nen anderen Link der dir evtl. weiterhilft Klick mich Zitieren
Technician Geschrieben 27. Mai 2005 Autor Geschrieben 27. Mai 2005 Nagut dann hab ich nen anderen Link der dir evtl. weiterhilft Klick mich Vielen Dank - das ging ja flott Zitieren
Guybrush Threepwood Geschrieben 27. Mai 2005 Geschrieben 27. Mai 2005 Nujo hab ja auch nur mal schnell bei google Richedit popup menu eingegeben und das als dritten vorschlahg bekommen Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.