Я все еще новичок в программировании GUI с использованием C ++ winapi32, и я обнаружил нечто странное
Вот часть моего кода:
InvalidateRect(hwnd,&rect, true);
//Sleep(delay);
MessageBox(hwnd, "Blahblah!", "blahblah",MB_OK | MB_ICONINFORMATION);
InvalidateRect(hwnd,&rect, true);
//Sleep(delay);
MessageBox(hwnd, "Blahblah!", "blahblah",MB_OK | MB_ICONINFORMATION);
Я использую Invalidaterect, чтобы перекрасить часть своих окон, и я пытаюсь перекрашивать окна каждые 1 секунду или около того, чтобы изменения стали очевидными для глаз пользователя. Странно то, что Sleep, похоже, не влияет на мои окна, если за ним не следует команда MessageBox, хотя на самом деле я не хочу иметь команду MessageBox для каждой перекраски, потому что это слишком мешает.
Я пробовал 1000,2000, даже 10000 за задержку.
Windoes замерзли во время сна, но перекрашивание выполняется только 1 раз в последней команде Sleep ...
Этот код является частью, скажем, void A (). А void A () вызывается void B ().
//Message loop
if(turn == 0)
{
B();
}
Есть ли альтернатива, которую я могу сделать, чтобы решить эту проблему?
О да, я использую MS Visual C ++ 2008 Express, кстати
Заранее благодарен за любую помощь по этому вопросу:)