Войти

Показать полную графическую версию : Таймеры: почему не работают?


mrcnn
06-07-2008, 10:05
Читал 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
SetTimer (hwnd, ID_TIMER, 10, (TIMERPROC) NULL);
hwnd откуда берешь?

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

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

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

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




© OSzone.net 2001-2012