nach Create immer noch Hwnd 0x0000
-
Hi!
Ich habe einen Pointer, welcher auf mehrere verschiedene Dialoge zeigt.
Dieser Pointer wird initialisiert mitCDialog *m_Dialoge[4]; m_Dialoge[0]=new DialogTyp1; m_Dialoge[1]=new DialogTyp2; m_Dialoge[2]=new DialogTyp3;
Dann werden die Dialoge initialisiert mit:
m_Dialoge[0]->Create(IDD_DIALOG1, this); m_Dialoge[1]->Create(IDD_DIALOG2, this); m_Dialoge[2]->Create(IDD_DIALOG3, this);
und beim dritten Dialog habe ich danach immer noch hwnd von 0x0000 ???
(Basisklasse ist immer CDialog)Hat jemand ne idee?
-
wo ist das Problem?
Du hast ein array mit 4 elementen. Du initialisierst aber nur die ersten 3.
-
@Xz59 meinst du den dritten Dialog, ausgehend von 0,1,2 oder den Dialog [3]?
-
Ich kann doch mein Array so groß wählen wie ich will, wenn ich nur auf zuvor initialisierte Pointer zugreife sollte es keine Fehler geben, oder liege ich falsch?
und beim dritten IDD_DIALOG3 (im Array der Index 2) habe ich nach des Aufrufes von Create immer noch ein hWnd von 0x00 obwohl ich dort einen wert zugewiesen bekommen müsste und wenn ich dann versuche den Dialog darzustellen bekomme ich einen Fehler (da hWnd ja 0x00 ist und keinen Wert hat leuchtet mir der Fehler ein, blos warum wird hWnd kein Wert zugewiesen?)
Bei den anderen beiden IDD_DIALOG1 und IDD_DIALOG2 (Array 0 und 1) funktioniert es einwandfrei auch mit einer Arraygröße von 15.
-
Ich dachte, du meinst vielleicht das Arrayelement mit Index 3. Ansonsten sieht der code ok aus, der Fehler liegt woanders
-
danke, das dachte ich auch schon, aber wo kann es liegen, wenn ich die Klasse von CDialog ableite?
-
Wo steht der erste teil, des codes, den du gepostet hast, wo der zweite?
-
beides in der in der FAQ vorgestellten Klasse für Registerkarten.
[url] http://www.fun-soft.de/script/?doc=vc&from=20&until=40#R1 [/url]
also in Initialisieren() (2ter Teil) und im Konstruktor (erster Teil)
Gruß XZ59
-
Hat niemand noch eine idee?
Gruß XZ59
-
Zeig mal den Code, der abstürzt.
-
void CMyTabCtrl::Initialisierung() { m_aktuelleSeite=0; m_tabellenSeite[0]->Create(IDD_TESTABLAUF, this); //funktioniert m_tabellenSeite[1]->Create(IDD_PROTOKOLL, this); // auch noch m_tabellenSeite[2]->Create(IDD_MANUELLE_TB, this); //hier bekomme ich kein hWnd (also ist 0x00) m_tabellenSeite[0]->ShowWindow(SW_SHOW); //geht wieder m_tabellenSeite[1]->ShowWindow(SW_HIDE); //auch m_tabellenSeite[2]->ShowWindow(SW_HIDE); //und hier hauts ihn dann raus SetRec(); }
-
Schick ma den Code. Aber ohne Debug-Verzeichnis, mit res-Verzeichnis und gezippt.
-
Was ich mir noch vorstellen könnte, wäre, dass IDD_MANUELLE_TB zwar noch irgendwo definiert ist, es aber keine Dialogresource gibt, die diese ID verwendet.
[ Dieser Beitrag wurde am 20.11.2002 um 16:43 Uhr von dEUs editiert. ]
-
Du musst einfach vor der Zeile
m_tabellenSeite[2]->Create(IDD_MANUELLE_TB, this); //hier bekomme ich kein hWnd (also ist 0x00)
die Funktion AfxInitRichEdit aufrufen.
-
danke dir