2010-12-08 5 views
1

Ich habe ein Problem mit CWnd :: CreateControl-Methode beim Laden von benutzerdefinierten ActiveX-Steuerelement aus der MFC-Anwendung.Problem mit MFC CWnd :: CreateControl-Methode

Ich habe eine Liste von benutzerdefinierten ActiveX-Steuerelementen, die implementiert sind Erstellen Sie Methode, die CWnd :: CreateControl-Methode aufrufen.

Ich habe Dialog-Fenster, im OnInitDialog habe ich Timer-Thread mit Settimer() gestartet. Im OnTimer-Ereignis lade ich alle Steuerelemente, indem ich die Create-Methode des entsprechenden Steuerelements aufruft. Nachdem das Dialogfenster mehr als 10 Mal geöffnet und geschlossen wurde, kann OnTimer die Steuerelemente nicht laden.

Ich überprüft den Rückgabewert, der falsch ist und der GetLastError, der 0x0 (Operation erfolgreich) ist. Ich habe das Debugging komplett durchgeführt und vor diesem Event alle möglichen Fehler überprüft. Ich konnte die Ursache nicht finden, was dazu führte, dass die Steuerelemente nicht geladen wurden.

+0

Danke Freunde. Ich habe dieses Problem gelöst. Das Problem liegt bei einigen ActiveX-Steuerelementen, die nicht mit COM-Regeln implementiert sind. In der InitInstance() -Methode sollte die CoInitialize() -Methode aufgerufen werden und in der ExitInstance() -Methode sollte die CoUninitialize() -Methode aufgerufen werden. Es ist nicht in einer Methode, die dieses Problem verursacht. Sobald es fertig ist, ist das Problem gelöst. –

Antwort

1

Sie sollen die Frage unten ähnliche Auftreten des Problems finden Exception while opening file

Die Ähnlichkeit ist es gut funktioniert, aber nach einiger Zeit würde es Ausnahme auslösen, und wenn wir die Fehlermeldung überprüfen wäre es kein Fehler sein aufgetreten . Das Problem wird nicht direkt in der Zeile sein, die eine Ausnahme verursacht. Es würde an anderer Stelle in der Anwendung lauern.

In meinem Fall, als ich die Methode änderte, wie ich auf die Methode zugreift, und es begann zu arbeiten.