Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.139 c
15-1336640074
jacksotnik
2012-05-10 12:54
2013.03.22
Можно ли в DesignMode открыть закрыть модуль зная его имя?


15-1349681511
Jeer
2012-10-08 11:31
2013.03.22
Отечественные микропроцессоры


2-1342616491
Максим
2012-07-18 17:01
2013.03.22
как отсортировать данные, не занося ВСЕХ их в массивы?


2-1329494261
leklerk
2012-02-17 19:57
2013.03.22
Проблемы с вычисляемым полем


6-1264661596
Separator
2010-01-28 09:53
2013.03.22
Проблема с gethostbyname





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский