Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Таймеры: почему не работают? (http://forum.oszone.net/showthread.php?t=110815)

mrcnn 06-07-2008 10:05 843651

Таймеры: почему не работают?
 
Читал MSDN, но так и не понял, почему не работает таймер..

Код:

#define ID_TIMER 13455

<...>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,PSTR szCmdLine,int iCmdShow);
<...>
void main()
{
<...>
HINSTANCE hInst=GetModuleHandle(NULL); 
WinMain(hInst,0,0,0);
<...>
}

int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,PSTR szCmdLine,int iCmdShow)
{
<...>       
SetTimer (hwnd, ID_TIMER, 10, (TIMERPROC) NULL);
<...>
 }

LRESULT CALLBACK WndProc(HWND hwnd, UINT imsg,WPARAM wParam, LPARAM lParam)
  {
<...>
  switch(imsg)
  {
      case WM_TIMER:                 
                switch (wParam)
                        {
                        case ID_TIMER:                               
                                Msg ("1");//MessageBox не появляется, значит сообщение не поступает
                                SendMessage(hwnd,WM_KEYDOWN,VK_DOWN,NULL);
                                return 0;
                        }
                return 0;


Alexej77 06-07-2008 22:04 844139

Цитата:

SetTimer (hwnd, ID_TIMER, 10, (TIMERPROC) NULL);
hwnd откуда берешь?

mrcnn 07-07-2008 08:36 844407

Цитата:

hwnd откуда берешь?
hwnd=CreateWindow(szAppName,"tetris",WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX,
0,0,window_wdth,window_hgth,NULL,NULL,hInst,NULL);

***Изменено***

Решил проблему. В оконой процедуре надо писать break а не return 0.

Написал наконец-то свой первый достаточно крупный проект - тетрис.


Время: 09:16.

Время: 09:16.
© OSzone.net 2001-