Bonjour à tous, je suis nouveau sur le forum, et j'espere que cette question n'a pas été postée des milleirs de fois
J'ai une application qui apelle une dll où une boite de dialogue doit apparaitre afin de saisir la valeur d'un code à barre (douchette ou clavier). Par rapport à l'architecture génrérale, je suis obligé que cette boite de dialogue soit dans cette dll...
Seul inconvénient, je suis obligé d'utiliser une autre application (dont je n'ai pas les sources) en même temps qui elle, reprend la main de temps en temps...
j'ai mis cette boite de dialogue au premier plan grace à la commande
::SetWindowPos(m_hWnd ,HWND_TOPMOST,294,251,415,240,SWP_SHOWWINDOW);
et ce qui est bizarre sous XP, c'est que la fenetre de saisie et celle de l'autre application semblent activées en même temps (les barres de titres sont en bleus foncés toutes les 2 mias la barre des taches de windows montre bien que c'est l'autre application qui est activée), le curseur clignote bien sur l'application de saisie, mais lorsque l'on saisie quelque chose, c'est l'autre application qui recoit les caractères !!! :
voici ce que j'ai tenté de faire :
Mettre un timer pour la fenêtre de saisie (toutes les 2 sec) et ce que je souhaite faire :
Si la fenêtre n'est pas activée, on l'active et on permet la saisie, sinon, on ne fait rien.
sauf que :
-je ne suis pas certain de passer dans le timer si la fenêtre est désactivée
- J'ai essayé de réactiver avec SetActiveWindow(); SetCapture(); sans effets
- J'ai essayé avec SetFocus après les commandes précédentes, ce qui n'arrange rien à la situation sauf que lorsaue la fenêtre est activée, la saisie devient un enfer
- Amélioration si je place SetForegroundWindow(); avant (la barre les taches clignote, mais je ne peux tout de même pas faire de saisie).
Quelqu'un aurait-il une idée afin que je puisse réactiver cette fenêtre ?
par avance merci,
Partager