CMenu-Problem
-
Hi erstmal der Quellcode, in welchem das Problem steckt
/******************************************************************************************** * Beschreibung: Ereignishandler für Kontextmenü des Dialogs * ********************************************************************************************/ LRESULT CPPage_Streams::OnNotifyList(int idCtrl, LPNMHDR pnmh, BOOL& bHandled) { __debugbreak(); CMenu menuRes; if ( menuRes.LoadMenu( IDR_MENU_POPUP ) == 0 ) { DWORD err = GetLastError(); CString s; s.Format(_T("%x"),s); MessageBox(s); } CMenu * pMenu; pMenu = menuRes.GetSubMenu(4); if ( pMenu != NULL ) { POINT ptCursor; ::GetCursorPos(&ptCursor); HWND hwnd = GetActiveWindow(); CWnd * wnd = CWnd::FromHandle(hwnd); BOOL rVal = pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RETURNCMD, ptCursor.x, ptCursor.y, wnd); if ( rVal > 0 && SUCCEEDED(HandlePopMenu(rVal))) return TRUE; } menuRes.DestroyMenu(); }Nun zu meinem Problem. Im Debug-Modus läuft alles einwandfrei, so wie es soll, es wird das Menü geladen ein Submenü extrahiert und angezeigt und dann auf das Ereignis reagiert. Im Release allerdings scheitert die Methode CMenu::LoadMenu() mit der Fehlermeldung 0x7c21a788 ( laut Windows Error successful ). Woran kann das liegen? Danke für jede Hilfe und ich hoffe kein Thema übersehn zu haben mit ähnlichen Problem.
mfg LeXxXxXx
-
Diesen Errocode 0x7c21a788 gibt es so nicht.
Mach mal einen Rebuild all. Oder lösche die RES Datei. Oder öffne mal die EXE im Resource-Editor und sachu nach ob die entsprechende ID vorhanden ist.
-
arg sry, merke gerade das da ein Fehler im Fehlercode ist ^^
die Zeile zur Ausgabe sollte doch folgendermaßen heißen
if ( menuRes.LoadMenu( IDR_MENU_POPUP ) == 0 ) { DWORD err = GetLastError(); CString s; s.Format(_T("%x"),[b]err[/b]); MessageBox(s); }der entstehende Fehlercode: 0x715 (hexadezimal) oder 1813 (dezimal)
Windows:
0x715: Der angegebene Ressourcentyp wurde nicht in der Image-Datei gefunden.
Ich versuch mal weiter rauszufinden warum und probier das mal aus.
Danke für jede weitere Hilfe

-
Nun das heißt einfach dass in Deiner EXE die Ressource nicht drin ist, wie ich schon vermutete.
Wie schon geschrieben: Öffne die EXE im Ressource Editor. Evtl. mach mal einen Rebuild all.
-
Danke hat aber nix genützt ein Rebuild hat nichts gebracht, hab das Problem anders gelöst in dem ich das Menü direkt erzeuge.
Danke trotzdem
-
War denn ein entsorechendes Menu unter der Nummer in der EXE?
-
Nein hab keins in der DLL gefunden
-
Also das Problem ist nicht gelöst, jetzt öffnet er Dialoge nicht mehr und diese sind in der DLL enthalten. Das Problem tritt wieder nur bei Release Modus auf. Fehlermeldung wieder die gleicher
Die angegebene Image-Datei enthält keinen Ressourcenabschnitt. (0x714)
CInfoDialog dlg(name,entry,rec,stream); if ( dlg.DoModal() == IDOK ) { }
-
DLL und MFC?
Hast Du denn AFX_MANAGE_STATE verwendet?
-
Ja das verwende ich, hatte bis jetzt noch nie Probleme bei DLL mit MFC, kann ja auch nicht wirklich sein das er die Ressourcen net reinhaut, in der DLL sind die nämlich drin nur findet er die anscheinend nicht -.-