Форум: "WinAPI";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизКак заставить работать таймер? Найти похожие ветки
← →
Nikfel (2009-11-21 22:34) [0]Почему-то не работает таймер хотя все верно создано. Просто когда уберешь из кода обработку wm_paint, то работает, а мне надо чтобы с wm_paint работало. Под скажите, пожалуйста, что не так? Заранее спасибо. Вот код для примера:
Program Api;
uses
Windows, Messages;
var
window: TWndClassEx;
Mwindow: HWND;
Mmsg: MSG;
// Процедура обработки сообщений
function WindowProc(wnd: HWND; msg: integer; wparam: WPARAM; lparam: LPARAM):LRESULT;STDCALL;
begin
case msg of
wm_paint:;
wm_create:settimer(wnd,7,1000,nil);
wm_timer:begin
case wparam of
7:showwindow(wnd,sw_hide);
end;
end;
WM_Destroy:
begin
killtimer(wnd,7);
PostQuitMessage(0);
Result:=0;
Exit;
end;
else
Result:=DefWindowProc(wnd,msg,wparam,lparam);
end;
end;
// Ристрация созданого класса
begin
window.cbSize :=sizeof (window);
window.style :=CS_HREDRAW or CS_VREDRAW;
window.lpfnWndProc:=@WindowProc;
window.cbClsExtra :=0;
window.cbWndExtra :=0;
window.hInstance :=HInstance;
window.hIcon :=LoadIcon (0,IDI_APPLICATION);
window.hCursor :=LoadCursor (0,IDC_ARROW);
window.hbrBackground:=Color_BtnFace+12;
window.lpszMenuName :=nil;
window.lpszClassName:="Main_Window";
RegisterClassEx (window);
// Создание окна на основе созданного класса
Mwindow:=CreateWindowEx(0,"Main_Window","First_WinAPI_Program",WS_OVERLAPPEDWIND OW,100,100,300,300,0,0,Hinstance,nil);
// Показать созданное окно
SHOWWINDOW(Mwindow,SW_Show);
// Цикл обработки сообщений
while GetMessage(Mmsg,0,0,0) do
begin
TranslateMessage(Mmsg);
DispatchMessage(Mmsg);
end;
end.
← →
DVM © (2009-11-21 22:37) [1]
> Просто когда уберешь из кода обработку wm_paint, то работает,
> а мне надо чтобы с wm_paint работало.
Почти все сообщения Windows нуждаются в возвращении некого результата, у тебя же в том же wm_paint пусто.
← →
nikfel (2009-11-21 22:45) [2]А что именно должно там быть чтобы таймер работал. Просто в любом случае, если есть wm_paint, таймер не работает.
← →
nikfel (2009-11-21 23:03) [3]Нашел что добавить надо:
var ps:TPaintStruct;
...
wm_paint:begin
BeginPaint(wnd,ps);
EndPaint(wnd,ps);
end;
← →
DVM © (2009-11-21 23:24) [4]
> nikfel (21.11.09 23:03) [3]
result := 0 еще не забудь
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.079 c