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 Zitieren
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 ?!?!? Zitieren
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 Zitieren
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); } Zitieren
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 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.