In una applicazione grafica con OpenGL ho inserito una dialog per settare l'aspetto degli oggetti (materiali e luci) renderizzati. Alla chiusura del dialogBox, con il tasto OK, l'aspetto degli oggetti non risultava ancora aggiornato, ma appena roteavo la vista, o la zummavo, allora le nuove impostazioni si concretizzavano nel rendering degli oggetti.
Ho pensato di lanciare il messaggio WM_ERASEBKGND, così:
codice:
INT_PTR nResponse = g_matDlg1.DoModal();
if (nResponse == IDOK)
{
CPaintDC dc(this );
SendMessage(WM_ERASEBKGND, (WPARAM)dc.m_hDC, 0L );
}
Questa volta, dopo aver ricompilato, le nuove impostazioni comparivano regolamente con la chiusura del box. Tutto sembrava dipendere da WM_ERASEBKGND, visto che con UpdateWindow() non avevo ottenuto risultati.
Per Pura curiosità ho voluto riportare il codice alla sua condizione precedente. Il risultato è che ora funziona lostesso. Ho provato a fare un "Rebuild solution", ma funziona regolarmente con lo stesso ed esatto codice che prima mi dava il problema del mancato aggiornamento della finestra.
Sono cose che capitano, o dovrenbbe essere strano?