Mam okno, które obsługuję wiadomości WM_NCLBUTTONUP, w celu obsługi kliknięć przycisków niestandardowych na pasku napisów. Działa to świetnie, gdy okno jest zmaksymalizowane, ale gdy nie jest, wiadomość WM_NCLBUTTONUP nigdy nie nadchodzi! Dostaję jednak wiadomość WM_NCLBUTTONDOWN. O dziwo WM_NCLBUTTONUP pojawia się, gdy kliknę po prawej stronie paska menu, ale w dowolnym miejscu wzdłuż paska napisów/ramki okna, wiadomość nigdy nie nadejdzie.Ciekawy problem brakującego komunikatu WM_NCLBUTTONUP, gdy okno nie jest zmaksymalizowane
Po chwili debugowania odkryłem, że jeśli ustawię punkt przerwania na CMainFrame :: OnNcLButtonDown(), kliknąłem pasek napisów, ale trzymam wciśnięty przycisk myszy, niech debugger włamie się do funkcji, naciśnij F5, aby kontynuować debugowanie, a następnie zwolnij przycisk myszy - magicznie WM_NCLBUTTONUP jest wysyłany !!
Moje pytanie jest dwojakie (1) co do diabła się dzieje? (2) w jaki sposób obejść ten "problem".
Zauważam również, że istnieje kilka innych osób w Internecie, które mają ten sam problem (szybkie Google ujawnia wiele innych osób z tym samym problemem, ale bez rozwiązania).
Edit
Dzięki dla pierwszych dwóch odpowiedzi, próbowałem dzwoniąc ReleaseCapture w NCLButtonDown, ale to nie ma żadnego wpływu (w rzeczywistości, zwraca NULL, wskazując przechwytywania nie jest na miejscu). Mogę tylko założyć, że funkcja klasy podstawowej (def window proc) może ustawić przechwytywanie. Zbadam w poniedziałek ...