Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Kontextmenü

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.07.2002, 22:33 Uhr
~Frank
Gast


Hallo!
Ich arbeite mit WinXP Home.
In meinem Quellcode habe ich einen Zeiger auf ein Menü.
Rufe ich nun die Funktion TrackPopupMenu auf und drücke nach Kompilieren in meinem Dialogfeld auf die rechte Maustaste, erhalte ich eine unbehandelte Ausnahme (Access violation).

CMenu* m_pMenu;
...
m_pMenu = GetMenu();
m_pMenu = m_pMenu->GetSubMenu(0);
m_pMenu->TrackPopupMenu(flags, x-Koord, y-Koord, this, NULL);

Ich kann mich erinnern, daß dies unter Win98 keine Probleme gab (oder doch und es ist nur zu lange her, als ich das brauchte???)

Ich hoffe, mir kann jemand weiterhelfen.
Danke.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.07.2002, 22:37 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Frank,
wo erfolgt der Aufruf?
Ist das das Objekt schon erzeugt? Was bringt F11?
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 17.07.2002 um 22:37 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.07.2002, 22:43 Uhr
~Frank
Gast


Hallo Uwe,

ich habe eine Funktion für die Nachricht WM_CONTEXTMENU eingefügt (WM_RBUTTONUP hat das gleiche Problem).
Das Object (Menü?) ist erzeugt.

Der Code in meiner behandelnden Funktion ist gering: Außer obigem Code habe ich nur noch eine Kopie der Mausposition in einer lokalen Variable gespeichert.
(Und vor dem Holen des Zeigers auf mein Fenstermenü konvertiere ich die Koordinaten noch mit ClientToScreen(&m_ptMausKoord) ).

Zum Debugger: Der Fehler tritt in CMenu::TrackPopupMenu auf (erste Code-Zeile dort: ASSERT(m_hMenu != NULL).

Frank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.07.2002, 22:49 Uhr
~Frank
Gast


Nachtrag:

Wieso auch immer: m_hMenu in TrackPopupMenu "kann nicht ausgewertet werden" (Fehler: CXX0030).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.07.2002, 22:52 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Frank,
hmm... Hab jetzt keinen Compiler zur Hand aber versuchs mal so:

C++:

void CMyView::OnContextMenu(CWnd* pWnd, CPoint point)
{
    CMenu menu;
    menu.LoadMenu(IDR_DEINMENU);
    menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,
        point.x, point.y,this);
}


Kann evtl. auf die Schnelle ein Tippfehler drin sein.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 17.07.2002 um 22:53 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.07.2002, 22:55 Uhr
Frank



Hallo Uwe,

danke für die schnelle Antwort. Aber: gleiches Problem. Wieder die gleiche access violation.

Frank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
17.07.2002, 22:59 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Frank,
ist jetzt schwierig aus der Ferne. Wenn du willst, schieb mal per Mail rüber
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
17.07.2002, 23:20 Uhr
Frank



Hallo Uwe,

jetzt wollte ich eine Minimalversion erstellen - und es läuft (Kontextmenü). Muß jetzt mal suchen, wo ich in meinem restlichen Programmcode was vermurkst habe.

Frank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
17.07.2002, 23:25 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Frank,
einen Ansatzt hast du ja mit dem ASSERT.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
18.07.2002, 08:28 Uhr
~Frank
Gast


Hallo Uwe,

Fehler gefunden. War wohl gestern abend zu spät....
Fehler lag bei der Menü-Ressource.
Der erste Eintrag war leer. Und das mag er wohl gar nicht.....
Ist mir absolut nicht aufgefallen. Erst heute, als ich mir die Ressourcenscriptdatei mal angeschaut hab....

Trotzdem Danke nochmal.

Frank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: