Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Это у меня Idle или нет? :)


Автор: Quadruple 31.3.2005, 20:57
Правильно ли я делаю в функции WinMain?
Код

while(TRUE) {
 if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) {
  if(!GetMessage(&msg, NULL, 0, 0)) {
   return msg.wParam;
  }
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
 else {
  MyIdle();
 }
}

Это и есть Idle? Потому как есть сообщение WM_ENTERIDLE, но на него ничего не реагирует, а если убрать цикл while, то прога после запуска закрывается smile т.е без цикла никак?

Автор: jorkug 1.4.2005, 14:15
Цитата(Quadruple @ 31.3.2005, 20:57)
если убрать цикл while, то прога после запуска закрывается
Конечно закрывается - она проходит по коду один раз и выходит из WinMain'a.

Цитата(Quadruple @ 31.3.2005, 20:57)
Потому как есть сообщение WM_ENTERIDLE, но на него ничего не реагирует

Так оно должно обрабатывать все сообщения до закрытия окна:
Код

while (GetMessage(&msg, NULL, 0, 0))
{
    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}
return msg.wParam;

В WndProc:
Код

switch (message)
{
   case WM_ENTERIDLE: //code
                     break;

}




Автор: Quadruple 2.4.2005, 10:53
jorkug
Понятно, спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)