Господа, проблема с тормозами при отрисовке ProgressBar, при его увеличении. Привожу код. Код (Text): else if (message == WM_TIMER) { ::SendMessage(GetDlgItem(hWnd, IDC_PROGRESS1), PBM_STEPIT, 0, 0); UINT result = ::SendMessage(GetDlgItem(hWnd, IDC_PROGRESS1), PBM_GETPOS, 0, 0); ::wsprintf(wsPercent, L"%d%%", result*10); ::SetWindowText(hEdit, wsPercent); } То есть — увеличивается длина Bar-а и изменяется сообщение о его состоянии. Фишка в чем — в result кладется уже новое (то есть верное значение), текст в hEdit меняется мгновенно, а перерисовка — лишь спустя доли секунды. То есть, глазами это наблюдать неприятно. Можно ли добиться того, чтобы значение в поле и отрисовка Bar-а будет проходить одновременно?..
Хм, проблема решена. Итого, в Windows XP все работает как должно - синхронно, а в Vista и 7 - наблюдаем вышеупомянутое отставание, ни в каком MSDN не описанное. Прикольно.
Namelles_One и как? почему не описанное? там же говорится, что инвалидный регион ставится в очередь сообщений, а отрисовка не самое первоочередное, те перерисовываться будет только когда в очереди останется только перерисовка. кстати, перерисовка это не сообщение, а флаг. те если вы до самой отрисовки пошлете еще 10 сообщений о ней - отрисуется только раз. кроме того, надо учитывать регион перерисовки и последнее. чтобы перерисовывалось в гди без ожидания, надо пользовать функцию RedrawWindow поэкспериментируйте только с ее флагами