Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Replacemenü Fehler, ...

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 < [ 2 ]
000
30.08.2002, 22:19 Uhr
Niko



Hi,

ich habe ein kleines Problem mit einem ReplaceMenü und es geht wieder einmal um eine MDI!
Der Code der Funktion ReplaceMenü sieht so aus:

C++:
   CMenu NewMenu;
   NewMenu.LoadMenu(n_IDResource);
   ASSERT(NewMenu);

   // Zerstöre das alte Menü
   SetMenu(NULL);
   :: DestroyMenu(m_hMenuDefault);
   SetMenu(&NewMenu);
   m_hMenuDefault = NewMenu.GetSafeHmenu();


Nur leider funktioniert das nicht ganz so, wie es soll!
Die eigentliche Funktion funktioniert nur, wenn ich das :: DestroyMenu(m_hMenueDefault) und das m_hMenuDefault = NewMenu.GetSafeHmenu() "deaktiviere" und wenn ich das mache, dann habe ich leichte Anzeigeschwierigkeiten mit dem Menü, wenn mehrere Dokumente gleichzeitig geöffnet sind, weil ja das DestroyMenu fehlt!

Ach ja, ich verwende in meiner MDI übrigens das CoolMenue und die MDI Tabs, die man auf codeguru.com in dem RichEdit Projekt (Edit heißt es) finden kann!!

Niko

Dieser Post wurde am 30.08.2002 um 23:05 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.08.2002, 23:24 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Niko,
stellt sich erst einmal die Frage in welche Klasse sich Deine Funktion befindet?

C++:
DrawMenuBar();


sollte am Ende der Funktion auch nicht fehlen.
--
"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
002
02.09.2002, 11:57 Uhr
Niko



Hi,

ok das bringt mir zwar keinen Fehler und ist auch logisch, aber funktioniereen tut es deshalb trotzdem nicht!

Ich denke doch, dass m_hMenuDefault das aktuelle Menu ist, oder??
Das hat man mir so gesagt, also hab ich auch keine Definition, ...

Niko
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.09.2002, 13:11 Uhr
~mike
Gast


Hi!
Wollte nur kurz noch was anhängen ;D
Der Fehler kommt bei
:: DestroyMenu(m_hMenuDefault);
und m_hMenuDefault gleich NULL ist. Die Funktion wird in CMainFrame aufgerufen

mfg mike
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.09.2002, 21:01 Uhr
Niko



Hi,

ich glaube an diesem Problem gehe ich noch zu grunde, ...

Da mike oben ja geschrieben hat, dass das Problem nur auftitt, wenn m_hMenuDefault gleich NULL ist, dachte ich mir ich mache das halt mit IFs, aber das geht auch nicht, ...

Das komische am Menü ist, dass immer wenn ich eine neue Datei in das View meines Projektes lade, auch beim Menü was passiert.
Ich habe dann zum Beispiel nicht mehr einen Beenden Knopf rechts oben, sonder gleich drei!!

Gibts für das Problem keine Lösung??
Niko
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.09.2002, 22:23 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Niko,
habe heute ein ähnliches Problem bei einem größern Projekt gehabt, bei dem ich die Menüs tauschen muß. Läuft eigentlich ohne Probleme. Pack mal (wenn Du das willst) Dein Projekt und schick mir's mal zu. Ich schau mal was Phase ist.
--
"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
006
11.09.2002, 21:13 Uhr
Niko



Hi,

danke Uwe, dass du dich um mein Problem kümmerst!!

Ich habe das Problem mal ins Netz geladen, man kann es sich jetzt unter
www.nkrismer.de/ProHelper.zip
runterladen!

Nochmals danke,
Niko
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.09.2002, 23:29 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Niko,
kannst das *.zip löschen. Auf den ersten Blick solltest Du CMenu NewMenu;
als Member in CMainFrame anlegen, da diese nach dem Verlassen der Funktion ihre Gültigkeit verliert.
Den Rest schau ich morgen an.
Nacht!
--
"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
008
12.09.2002, 18:55 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Niko,
So sollte es funktionieren

C++:
void CMainFrame::ReplaceMenu(UINT n_IDResource)
{
   //CMenu NewMenu; als Membervariable in CMainFrame
   NewMenu.LoadMenu(n_IDResource);
   ASSERT(NewMenu);

   SetMenu(NULL);
  
   SetMenu(&NewMenu);
  
   DrawMenuBar();
   NewMenu.Detach(); //vorzeitig zerstören, da Destroy unsicher!
}

--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 12.09.2002 um 18:56 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.09.2002, 20:50 Uhr
Niko



Hi,

danke Uwe, ich versuche das sobald ich wieder mein Netzwerk gerichtet habe.

Im Moment stelle ich nämlich alles um, weil ich einen P4 bekommen habe (Juhu, ...)

Also, nochmals danke,
Niko
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: