Des mots immortels du film Mr. Mom, "Vous le faites mal."
Non, vous ne pouvez pas définir hwnd à partir de Jacob. Je serais intéressant comment vous appelez CWnd :: SetTimer(). Il doit toujours provenir d'une fenêtre créée et associée à un m_hWnd. Donc, en supposant que vous avez une fenêtre valide, vous appelez:
// assume pWnd is a CWnd* or derived object that has been created.
pWnd->SetTimer(nIDEvent, nElapse, NULL);
Le CWnd (ou dérivé) doit avoir déjà été créé. Donc, vous avez quelques options ...
Supposons que vous avez déjà un hwnd HWND ....
Vous devriez avoir une certaine classe et de cette classe que vous appelez SubclassWindow ...
CSomeWindow someWindow; // declaring these on stack probably bad idea
someWindow.SubclassWindow(hwnd);
someWindow.SetTimer(nIDEvent, nElapse, NULL);
l'autre option est que vous créez la fenêtre ...
CSomeWindow someWindow; // declaring these on stack probably bad idea
someWindow.Create(.... create params);
someWindow.SetTimer(nIDEvent, nElapse, NULL);
ou
CSomeWindow* pSomeWindow = new CSomeWindow();
pSomeWindow->Create(.... create params);
pSomeWindow->SetTimer(nIDEvent, nElapse, NULL);
Dans l'exemple ci-dessus, aucune fonction n'est fournie - juste NULL. Dans ce cas, il dirigera vers votre gestionnaire ON_WM_TIMER().
OTOH, peut-être avez-vous une fenêtre (votre contrôle OCX?), Pour laquelle vous voulez régler le minuteur. Eh bien, vous voulez juste vous assurer que vous l'appelez après que la fenêtre (HWND) a été créée. Quelque temps après sa méthode OnCreate() a été créée. Cela pourrait être votre problème, mais vous avez peu d'informations et je ne fais que poignarder dans le noir.
pYourOcx->SetTimer(nIDEvent, nElapse, NULL);
Cependant, techniquement, vous n'avez même pas besoin d'une fenêtre. Vous pouvez appeler la version Windows API de SetTimer() ...
::SetTimer(NULL, nIDEvent, nElapse, MyTimerFunc); // MyTimerFunc is your user defined timer function
Merci, je l'ai résolu. J'ai dû corriger l'ocx existant et accrocher SetTimer pour créer un HWND factice pour le traiter parce qu'il y avait un Ontimer très ramifié. –