Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Как заставить работать таймер?   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.071 c
15-1332451802
Юрий
2012-03-23 01:30
2013.03.22
С днем рождения ! 21 марта 2012 среда


2-1328179304
cardon
2012-02-02 14:41
2013.03.22
Подсказка в StringGrid


3-1284687349
Александр Т
2010-09-17 05:35
2013.03.22
Трехзвенка: зависание при одновременном подключении клиентов


15-1350926092
Дмитрий С
2012-10-22 21:14
2013.03.22
Электрический натягиватель троссика?


15-1329862645
Дмитрий С
2012-02-22 02:17
2013.03.22
Спам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский