Veröffentlicht 29. März 200520 j 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
27. Mai 200520 j 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*
27. Mai 200520 j Nagut dann hab ich nen anderen Link der dir evtl. weiterhilft Klick mich Vielen Dank - das ging ja flott
27. Mai 200520 j Nujo hab ja auch nur mal schnell bei google Richedit popup menu eingegeben und das als dritten vorschlahg bekommen
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.