nicht modaler Dialog
-
kann mir jemand verraten wie ich einen nicht modalen Dialog anlege, bzw. öffne?
mein Code bringt mir einen Fehler nach dem anderen:void CHLRUSLG_SampleDlg::OnLiz() { pDialog = new CHLRUSLG_SampleDlg(); if(pDialog != NULL) { BOOL ret = pDialog->Create(IDD_HLTEST,this); if(!ret) //Create failed. AfxMessageBox("Error creating Dialog"); pDialog->ShowWindow(SW_SHOW); } else AfxMessageBox("Error Creating Dialog Object"); }
Teddy
-
mein Code bringt mir einen Fehler nach dem anderen:
welche denn, von was ist this abgeletet von CWnd und hat this ein gültiges fenster-handle ??
ich sehe,
pDialog = new CHLRUSLG_SampleDlg();
von der selben klasse ??
[ Dieser Beitrag wurde am 14.04.2003 um 14:07 Uhr von vdittrich editiert. ]
-
CHLRUSLG_SampleDlg* pDialog = new CHLRUSLG_SampleDlg();
so sollte die Zeile richtig heißen.
Die Fehlermeldung lautet:
An unsupported operation was attempted.
Danach kommt dann sofort eine "The memory could not be "read"" meldung
-
void CHLRUSLG_SampleDlg::OnLiz() { pDialog* = new CHLRUSLG_SampleDlg(); if(pDialog != NULL) { BOOL ret = pDialog->Create(IDD_HLTEST,this); if(!ret) //Create failed. AfxMessageBox("Error creating Dialog"); pDialog->ShowWindow(SW_SHOW); } else AfxMessageBox("Error Creating Dialog Object"); }
->>
void CHLRUSLG_SampleDlg::OnLiz() { pDialog* = new CHLRUSLG_SampleDlg(); // du willst nochmal eine instance von CHLRUSLG_SampleDlg erstellen ?? BOOL ret = pDialog->Create(IDD_HLTEST,this); if(!ret) //Create failed. AfxMessageBox("Error creating Dialog"); //dialog wird angezeigt pDialog->ShowWindow(SW_SHOW); //fenster soll angezeigt weredn auch wenn !ret ?? //wenn dann hätte ich if(!ret) //Create failed. { AfxMessageBox("Error creating Dialog"); } else { pDialog->ShowWindow(SW_SHOW); } //was sagt this? ASSERT(::IsWindow(this->m_hWnd));
-
ich will doch nur, dass bei klicken auf den entsprechenden Button, ein neues Fenster aufgeht, in dem ich andere Funktionen eingebaut habe. Dieses Fenster soll nicht Modal sein, da im ersten Fenster weiterhin gearbeitet werden soll.
Den Code hab ich 1:1 ausm MSDN übernommen und für MyDialog halt meinen Dialog angegeben.
Orginal MSDN:
CMyDialog* pDialog; void CMyWnd::OnSomeAction() { //pDialog initialized to NULL in the constructor of CMyWnd class pDialog = new CMyDialog(); //Check if new succeeded and we got a valid pointer to a dialog object if(pDialog != NULL) { BOOL ret = pDialog->Create(IDD_MYDIALOG,this); if(!ret) //Create failed. AfxMessageBox("Error creating Dialog"); pDialog->ShowWindow(SW_SHOW); } else AfxMessageBox("Error Creating Dialog Object"); }
-
mit dem unterschied
void CHLRUSLG_SampleDlg::OnLiz() { pDialog* = new CHLRUSLG_SampleDlg(); // 1. du erstellst ein klasse von deiner eigenen klasse, wie ist die definiert? // so etwa?? // class CHLRUSLG_SampleDlg: public CDialog //{ // ... //} // 2. du hast jetzt zwar eine neue instance deiner klasse (sofern sie richtig definiert ist) // aber jedes fenster hat ein parent-fenster oder elternfenster, und das ist this und der sollte ein gültiges fensterhanlde haben // microsoft ... ist ist dur ein beispiel und CMyDialog ist sicher von CDialog abgeleitet, der rest ist wenn das umfeld stimmt (code) ok.
-
Hau mir doch btte einer was um die Ohren, ich habs.
Natürlich will ich keine Klasse von meiner eigenen Klasse erstellen sondern eine Klasse von CHLTEST. Hätte auch fast gefunzt, wenn ich die HLTEST.h eingebunden hätte
Oki, wieder was gelernt!!Danke für deine Mühe vdittrch
MfG
Teddy