Я все еще новичок в программировании графического интерфейса с помощью 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 для перерисовки части своих окон, и я пытаюсь перекрашивать окна каждую секунду или около того, чтобы изменения были очевидны для глаз пользователя. Странно то, что 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.
Заранее спасибо за любую помощь в этом вопросе :)
delay
вы пробовали? - person wallyk   schedule 03.09.2011