2010-12-08 55 views
1

J'ai un problème avec la méthode CWnd :: CreateControl lors du chargement du contrôle ActiveX personnalisé à partir de l'application MFC.Problème avec la méthode CWnd :: CreateControl

J'ai une liste de contrôles ActiveX personnalisés qui sont implémentés. Créer une méthode en appelant la méthode CWnd :: CreateControl.

J'ai une fenêtre de dialogue, dans le OnInitDialog, j'ai démarré le thread minuteur en utilisant Settimer(). Dans l'événement OnTimer, je charge tous les contrôles en appelant la méthode Create du contrôle respectif. Après l'ouverture et la fermeture de la fenêtre de dialogue plus de 10 fois, OnTimer n'est pas en mesure de charger les contrôles.

J'ai vérifié la valeur de retour qui est false et le GetLastError qui est 0x0 (opération réussie). Je débugguais complètement et vérifiais toutes les possiblités d'erreurs avant cet événement. Je n'ai pas pu trouver la cause première de ce qui ne chargeait pas les contrôles.

+0

Merci amis. J'ai résolu ce problème. Le problème est avec certains contrôles ActiveX qui ne sont pas implémentés avec des règles COM. Dans la méthode InitInstance(), la méthode CoInitialize() doit être appelée et dans la méthode ExitInstance() la méthode CoUninitialize() doit être appelée. Ce n'est pas fait dans une méthode qui provoque ce problème. Une fois fait, le problème est résolu. –

Répondre

1

Vous pouvez consulter la ci-dessous la question occurence similaire du problème Exception while opening file

La similitude étant elle fonctionnait très bien, mais après un certain temps, il jetterait exception et quand nous vérifions le message d'erreur, il ne serait pas erreur est survenue . Le problème ne sera pas directement à la ligne qui provoque une exception. Il serait caché ailleurs dans l'application.

Dans mon cas, lorsque j'ai changé la façon dont j'accédais à la méthode et cela a commencé à fonctionner.