Ho una finestra che gestisco i messaggi WM_NCLBUTTONUP, al fine di gestire i clic sui pulsanti personalizzati nella barra dei sottotitoli. Funziona alla grande quando la finestra è ingrandita, ma quando non lo è, il messaggio WM_NCLBUTTONUP non arriva mai! Ricevo però un messaggio WM_NCLBUTTONDOWN. Stranamente WM_NCLBUTTONUP arriva se faccio clic sulla destra della barra dei menu, ma ovunque lungo la barra della didascalia/frame della finestra, il messaggio non arriva mai.Il problema curioso del messaggio WM_NCLBUTTONUP mancante quando una finestra non è ingrandita
Dopo un po 'di debugging ho scoperto che se ho impostato un punto di interruzione CMainFrame :: OnNcLButtonDown(), cliccato barra del titolo, ma mantenere il pulsante del mouse premuto, lasciare che la pausa debugger nella funzione, premere F5 per continuare debugging, quindi rilascia il pulsante del mouse: magicamente viene inviato WM_NCLBUTTONUP !!
La mia domanda è duplice, (1) che diavolo sta succedendo? (2) come faccio a aggirare questo "problema".
Ho anche notato che ci sono molte altre persone su Internet che hanno lo stesso problema (un rapido Google rivela molte altre persone con lo stesso problema, ma nessuna soluzione).
Modifica
Grazie per le prime due risposte, ho provato a chiamare ReleaseCapture in NCLButtonDown, ma non ha alcun effetto (infatti, esso restituisce NULL, che indica una cattura non è a posto). Posso solo supporre che la funzionalità della classe base (def window proc) possa impostare una cattura. Investigherò il lunedì ...