2009-05-07 9 views
0

erstellen schlägt fehl Ich habe Probleme mit einigen Code mit einem CDialog basiert Fenster zu erstellen. Der Code funktionierte letzte Woche gut. Die einzigen Änderungen, die ich vorgenommen habe, waren das Ersetzen einer C++ - Deque durch ein Hash-Array. Ich hatte die Codezeile mit der aufgerufenen Create-Methode auskommentiert, damit ich das Laden des Fensters überspringen konnte. Jetzt erstellt der Code das Fenster überhaupt nicht mehr.MFC CDialog ::

Die Funktion erstellen false zurück und die GetLastError-Funktion gibt 0 Ich habe keine custome Kontrollen innerhalb des Fensters verwenden - nur eine Checkbox und eine Liste Kontrolle. Soweit ich das beurteilen kann (ich kann an dieser Stelle keinen Debugger anhängen), werden die Funktionen OnCreate und OnInitDialog überhaupt nicht aufgerufen.

Ich habe den Code unten, dass klebte ich Erstellen Sie die Funktion Rückkehr und GetLastError

BOOL result = ORDER_HANDLER_GUI.Create(OrderHandlerGUI::IDD, AfxGetMainWnd()); 
int error = ::GetLastError(); 

if(result) 
    AfxMessageBox("Created GUI"); 
else 
{ 
    CString msg; 
    msg.Format("%d", error); 
    AfxMessageBox("Could not create GUI"); 
    AfxMessageBox(msg); 
} 

-Update zu testen, habe mit: ich es endlich geschafft, befestigen Sie den Debugger zu bekommen (das ist ein Plugin geladen in einer 3rd-Party-Anwendung, die den Debugger aus irgendeinem Grund nicht mochte). Nach dem Durchlaufen des Codes scheint AfxGetMainWnd() NULL zurückzugeben. Ich teste jetzt mehr daran.

+0

Was ist der Fehlercode? – DavidK

+0

Warum können Sie den Debugger nicht anhängen? –

Antwort

1

Die Probleme scheinen mit dem Aufruf von CDynLinkLibrary gewesen zu sein().

ich dies aus auf Antrag des Unternehmens hatte kommentiert, die die Software schreibt, dass mein Plugin geladen ist. Das Hinzufügen dieser Zeile führte dazu, dass einige Werte immer noch null waren, aber das Fenster wurde nun ordnungsgemäß erstellt.

Ich werde ein wenig Forschung auf, dies zu tun und wird aktualisiert, wenn ich nichts finden. Wenn jemand mehr darüber weiß (nicht schwer zu tun), können Sie Kommentare hinterlassen.

0

Nutzt der Dialog alle Steuerelemente, die das Problem verursachen könnte? Ein Richedit zum Beispiel?

+0

Nein, es gibt nur ein Kontrollkästchen und ein Listensteuerelement. Ich habe sogar versucht, alle Steuerelemente zu entfernen und den entsprechenden Code in der Klasse zu kommentieren, und Create() kann immer noch nicht funktionieren. – Noaki