2008-11-03 11 views
1

Depuis que je dois faire des contrôles en fonction de prise de contrôle sur le focus dans mon application, je reçois l'ID de contrôle ciblé comme celui-ci:Pourquoi ne puis-je pas trouver d'ID de contrôle dans mon fichier de ressources dans ATL?

HWND controlOnFocus = ::GetFocus(); 
int controlID = ::GetDlgCtrlID(controlOnFocus); 

Je reçois des ID compatibles, mais je ne peux pas les trouver dans le fichier de ressources! Puis-je compter sur les ID que je reçois ou quoi?

Toute aide serait grandement appréciée.

Répondre

1

Votre extrait de code obtient l'identificateur de contrôle de la fenêtre qui a le focus actuel. Votre application est susceptible d'inclure de nombreuses fenêtres que vous n'avez pas créées vous-même, telles que des boîtes de dialogue communes, et les ID de celles-ci ne figureront pas dans votre fichier de ressources. De plus, toutes les fenêtres n'ont pas d'ID de contrôle utile; Par exemple, les contrôles de texte statique ont généralement ID_STATIC (-1?).

+0

voir edit - quelques détails ajoutés – JohnIdol

+0

J'exécute l'extrait sur un gestionnaire d'événements clic droit (c'est en fait un gestionnaire de message avec la signature 'UINT, WPARAM, LPARAM, BOOL &' donc je ne peux pas obtenir l'ID de contrôle) pour vérifier à partir de quel contrôle arrive - clic droit sur les mêmes contrôles me donne les mêmes ID. Comment dois-je interpréter cela? – JohnIdol

+0

Oublié d'ajouter Mes contrôles sont générés dynamiquement - puis-je me fier à l'ID si je ne change rien d'autre? – JohnIdol

Questions connexes