Technician Geschrieben 11. März 2003 Geschrieben 11. März 2003 Hallo, wie kann ich mittels MFC ein Kontextmenü erstellen, das erscheint, wenn mein RichEdit mit der rechten Maustaste angeklickt wird? Gruß, Technician
bigpoint Geschrieben 12. März 2003 Geschrieben 12. März 2003 void CProgDlg::OnContextMenu(CWnd* pWnd, CPoint point) { // Lokale Variablen deklarieren CMenu *m_lMenu; // Zeiger auf Menü CPoint m_pPoint; // Kopie der Mausposition // Mausposition in lokale Variable kopieren m_pPoint = point; // Zeiger auf Fenstermenü holen m_lMenu = GetMenu(); // Zeiger auf erstes Untermenü holen m_lMenu = m_lMenu->GetSubMenu(0); // Popup-Menü anzeigen m_lMenu->TrackPopupMenu(TPM_CENTERALIGN + TPM_LEFTBUTTON, m_pPoint.x, m_pPoint.y, this, NULL); } [/PHP] hast Du so versucht ?!?!?
Technician Geschrieben 12. März 2003 Autor Geschrieben 12. März 2003 Hallo, ich habe IDR_KONTEXTMENUE als eigenes Menü angelegt (also nicht als Untermenü). void CSandorfCode::OnContextMenu(CWnd* pWnd, CPoint point) { CMenu *m_lMenu; CPoint m_pPoint; m_pPoint = point; // Zeiger auf anzuzeigendes Menü m_lMenu->LoadMenu(IDR_KONTEXTMENUE); // Popup-Menü anzeigen m_lMenu->TrackPopupMenu(TPM_CENTERALIGN + TPM_LEFTBUTTON, m_pPoint.x, m_pPoint.y, this, NULL); } Hier gibt es allerdings in der Zeile m_lMenu->LoadMenu(IDR_KONTEXTMENUE) einen Fehler, da ja m_lMenu nicht initialisiert ist. aber mit welchem Wert soll der Zeiger initialisiert werden?! :confused: Gruß, Technician
Technician Geschrieben 12. März 2003 Autor Geschrieben 12. März 2003 ... so funktioniert's zwar - aber das Kontextmenü wird nur als schmaler Streifen angezeigt. Genau so hoch, wie das Menü sein sollte - aber nur ca. 20 Pixel breit Woran kann das liegen?! void CSandorfCode::OnContextMenu(CWnd* pWnd, CPoint point) { CPoint m_pPoint; // Kopie der Mausposition Mausposition in lokale Variable kopieren m_pPoint = point; CMenu menu; menu.LoadMenu(IDR_KONTEXTMENUE); menu.TrackPopupMenu(TPM_CENTERALIGN + TPM_LEFTBUTTON, m_pPoint.x, m_pPoint.y, this, NULL); }
Guybrush Threepwood Geschrieben 13. März 2003 Geschrieben 13. März 2003 Hi, ich hab folgenden Code in der MSDN gefunden: CMenu menu; VERIFY(menu.LoadMenu(IDR_MENU1)); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, x, y, AfxGetMainWnd()); [/PHP] Probier`s mal damit aus. Gruß Guybrush
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