Buongiorno,
ho un'applicazione a finestra con due finestre di dialogo.
L'applicazione disegna il grafico di valori ricevuto sulla porta seriale.
Un dialogo contiene i controlli per impostare la composizione del grafico.
L'altro dialogo mi fa da legenda dei valori.
Problema: ho letto che quando c'è una finestra e dei dialog si deve modificare il ciclo dei messaggi principali.
modificato in:codice:// Ciclo di messaggi principale: while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } }
In hDlgCurrent viene memorizzato l'handle del dialogo attualmente attivo.codice:// Ciclo di messaggi principale: while (GetMessage(&msg, NULL, 0, 0)) { if ((NULL == hDlgCurrent) || (!IsDialogMessage(hDlgCurrent, &msg)) || (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))) { TranslateMessage(&msg); DispatchMessage(&msg); } }
Solo che così facendo i messaggi delle finestre di dialogo sono duplicati. Ossia, un click sulla barra di scorrimento ad esempio è come se fosse "mezzo" click. Devo cliccare due volte per ottenerne uno.
Se invece lascio il ciclo dei messaggi originale, tutto funziona.
Direte voi, e allora lascia quello originale.![]()
E' che volevo capire che succede.
WinXP con VC++ express 2008.

Rispondi quotando