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
Guybrush Threepwood Geschrieben 29. März 2005 Geschrieben 29. März 2005 Sollte genauso gehen wie hier.
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*
Guybrush Threepwood Geschrieben 27. Mai 2005 Geschrieben 27. Mai 2005 Nagut dann hab ich nen anderen Link der dir evtl. weiterhilft Klick mich
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
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
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden