J'ai un projet MS Visual C++ dans lequel j'ai une boîte de dialogue basée sur CDialog avec plusieurs contrôles d'édition. Je veux mettre en évidence le contrôle avec l'accent actuel pour l'utilisateur. Je l'ai implémenté en obtenant un pointeur vers la fenêtre qui a le focus en cours avec GetFocus() et en obtenant l'ID pour le contrôle focus avec GetDlgCtrlID():Restriction de GetFocus à une boîte de dialogue et/ou une application spécifique
CWnd * pWnd = GetFocus();
idfocus = (pWnd-> GetDlgCtrlID()); Je compare ensuite cela à la commande actuelle pour laquelle le HBRUSH est défini dans la fonction membre OnCtlColor.
Cela fonctionne très bien jusqu'à ce que je clique sur la fenêtre pour une autre application fonctionnant sur mon PC. Comme Firefox. À quel moment mon application se bloque.
Quelle est la meilleure façon de trouver le contrôle, le cas échéant, dans une boîte de dialogue spécifique, et seulement cette boîte de dialogue particulière, a le focus? Ou peut-être limiter à la même application.
Avez-vous une pile d'appel provenant du plantage de votre application? Je ne vois pas pourquoi ce code pourrait causer cela. –