PDA

Visualizza la versione completa : [C++] Gestione messaggi con finestre di dialogo


Rubox
20-07-2009, 10:59
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.


// Ciclo di messaggi principale:
while (GetMessage(&msg, NULL, 0, 0))
{

if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}


modificato in:


// 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);
}
}


In hDlgCurrent viene memorizzato l'handle del dialogo attualmente attivo.
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. :D

E' che volevo capire che succede.

WinXP con VC++ express 2008.

Loading