Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Zeiger auf Hauptdialog

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
17.09.2003, 20:18 Uhr
docreggae



Hi Leute!

Ich habe folgenden Code:


C++:
void CNichtmodalDlg::OnClose()  
{

     CHauptDlg *HauptDlg = NULL;
    
     CMenu *pMenu =  HauptDlg->GetMenu();
     CMenu *pSubMenu = pMenu->GetSubMenu(2);
     pSubMenu->CheckMenuItem(ID_VIEW_ITEM1,MF_UNCHECKED);    
    

     CDialog::OnClose();
    
}



Beim nem anderen Forum haben die mir gesagt, dass ich einen gültigen Zeiger auf den Hauptdialog brauche. Dannach haben die nicht mehr geantwortet. Also frage ich euch: Wie bekomme ich den?

Vielleicht etwas zu dem Code: Ich versuche beim Schließen des einen Dialoges einen Haken in einen anderen Dialog zu machen.

Danke schon mal im Vorraus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.09.2003, 20:41 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wenn dein NichtmodalDlg ein "untergeordnetes" Fenster bzw wenn das Fenster als Haupt-Parent-Handle beim Create aufruf einen Pointer auf deinen Hauptdialog übergeben hast:


C++:
CHauptDlg *HauptDlg = (CHauptDlg*)GetParent();


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.09.2003, 21:02 Uhr
0xdeadbeef
Gott
(Operator)


Ansonsten kriegst dus wahrscheinlich über AfxGetMainWnd(); oder so was ähnliches.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.09.2003, 22:15 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



C++:
CHauptDlg *HauptDlg = (CHauptDlg*)GetParent();



Verdammt so einfach ist das
und ich habe immer den Konstruktor so verändert das der den Pointer this mitbekommen hat
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.09.2003, 23:02 Uhr
0xdeadbeef
Gott
(Operator)


Gibt GetParent nicht nur den Zeiger zurück, den du vorher im Konstruktor entgegengenommen und (hoffentlich) an den Konstruktor von CWnd (respektive der von CWnd abgeleiteten Basisklasse) weitergegeben hast?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.09.2003, 01:07 Uhr
Philipp



Auf jeden Fall ist AfxGetMainWnd() die allereinfachste Möglichkeit...

Bringt wirklich einiges, wenn man das nicht mehr immer im Konstruktor machen muss!

Philipp
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.09.2003, 17:56 Uhr
docreggae



Danke für euere Antworten. Aber jetzt kommt ein neues Propblem: Denn immer, wenn ich versuche, dass Fenster ein zweites Mal aufzurufen, schmiert mein Programm wieder ab. Woran kann das liegen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
18.09.2003, 21:00 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


sowas hatte ich auch schon öfter
wahrscheinlich gibst du nicht wieder alles frei oder das geht doch nicht so ohne weiteres wie FloSoft meinte. In dem Fall dann funktioniert das, wenn du den konstruktor des aufzurufenden Dialoges änderst und ihm dann beim aufrufen ein zeiger auf den parentdialog mitgibst
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
18.09.2003, 21:08 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


@Windalf, normal muss man den Konstruktor nicht ändern, beim Create aufruf kann man wndParent als letzten Parameter angeben...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
18.09.2003, 21:12 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ach ja ist ja nicht modal, stimmt dann müsste das funzen
dann ist der fehler bestimmt das der irgendwas "holt" z.b. getDC oder sowas und das Release vergisst oder sowas in der Art. Bei mir war das jedenfalls so gewesen. Da ist der mir immer abgeschmiert weil ich irgendwas vergessen hatte freizugeben
--
...fleißig wie zwei Weißbrote
 
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: