J'ai une fenêtre pour gérer les messages WM_NCLBUTTONUP, afin de gérer les clics sur les boutons personnalisés dans la barre de légende. Cela fonctionne très bien lorsque la fenêtre est agrandie, mais quand ce n'est pas le cas, le message WM_NCLBUTTONUP n'arrive jamais! J'obtiens un message WM_NCLBUTTONDOWN cependant. Bizarrement WM_NCLBUTTONUP arrive si je clique sur la droite de la barre de menu, mais n'importe où le long de la barre de légende/cadre de la fenêtre, le message n'arrive jamais. Après un moment de débogage, j'ai découvert que si je définissais un point d'arrêt sur CMainFrame :: OnNcLButtonDown(), je cliquais sur la barre de légende, mais maintenez le bouton de la souris enfoncé, laissez le débogueur interrompre la fonction, appuyez sur F5 pour continuer débogage, puis relâchez le bouton de la souris - magiquement WM_NCLBUTTONUP est envoyé !!Le curieux problème du message WM_NCLBUTTONUP manquant lorsqu'une fenêtre n'est pas agrandie
Ma question est double, (1) qu'est-ce qui se passe? (2) comment contourner ce "problème".
Je remarque également qu'il y a plusieurs autres personnes sur Internet qui ont le même problème (un rapide Google révèle beaucoup d'autres personnes avec le même problème, mais aucune solution).
Modifier
Merci pour les deux premières réponses, j'ai essayé d'appeler ReleaseCapture dans NCLButtonDown, mais il n'a pas d'effet (en fait, elle retourne NULL, ce qui indique une capture est pas en place). Je ne peux que supposer que la fonctionnalité de classe de base (def window proc) peut définir une capture. Je vais enquêter sur lundi ...