Je suis nouveau à MFC (venant de C# et de Java) et de comprendre les choses.Comment gérer CEdit clic de souris sous forme parent?
Considérez une boîte de dialogue avec trois zones de texte. J'ai sous-classé CEdit à CMyEdit, et les trois zones de texte sont attachées aux variables de CMyEdit dans la classe de dialogue.
Je souhaite autoriser la classe de dialogue à "savoir" lorsque l'une des trois zones de texte a été cliquée avec le bouton gauche de la souris. J'ai trouvé des exemples de comment ajouter un gestionnaire ON_WM_LBUTTONDOWN à ma classe CMyEdit. Fonctionne bien, mais le gestionnaire est uniquement dans la classe CMyEdit. Supposons que chaque fois que l'on clique sur l'une des zones de texte, je veux que la boîte de dialogue désactive les deux autres. Comment puis-je obtenir la boîte de dialogue notifiée du clic gauche?
Ceci est un exemple complètement artificiel et simplifié. Je n'ai pas d'application avec des clics gauches dans les zones de texte. Mais je pense que le fait que je ne peux pas comprendre comment le faire indique une incompréhension fondamentale de la façon de traiter les événements de l'interface utilisateur dans MFC. Venant du monde de C#, où tout est fait pour moi et j'ai un accès direct à l'un des événements que je veux (mise au point, double clic de souris, peu importe) Je suis très confus sur pourquoi certains événements sont spéciaux et fournir un accès facile. Dans le cas de CEdit, je ne comprends pas pourquoi j'ai eu le focus, le focus, le changement, et plusieurs autres sont "directement" disponibles pour moi sans problème, mais d'autres événements, comme le clic de souris, ne le sont pas.
Mais revenons à ma vraie question: dans le scénario décrit ci-dessus, comment puis-je obtenir la boîte de dialogue notifiée des clics gauche de la souris sur les zones de texte? Est-ce que les boîtes de texte doivent lever des événements ou envoyer des messages (ou quelque chose d'autre) à la boîte de dialogue?
Merci Goz pour le code, je vois que va effectivement accomplir ce que j'ai demandé. Ce n'est pas vraiment ce que j'espérais, cependant. Ce qui m'embête, c'est ceci: comme je l'ai mentionné, j'ai sous-classé CEdit dans CMyEdit, et j'ai traité le message ON_WM_LBUTTONDOWN ici. Les objets CMyEdit "savent" quand ils ont été cliqués. N'y a-t-il pas un moyen pour eux de notifier la boîte de dialogue qu'ils ont été cliqués, plutôt que de faire tous les tests de réussite? Cela a plus de sens pour moi, mais ce n'est peut-être pas la façon de le faire. – Rob3C
Eh bien, vous savez ce que la classe parent est ... vous pouvez toujours appeler une fonction sur elle. Il vous lierait cependant quelque peu la boîte d'édition à votre boîte de dialogue. Je suppose que vous pourriez dériver un "CMyDialog" de CDialog et ad la fonctionnalité là ... – Goz