Главная страница
    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.098 c
2-1329055821
Rasta
2012-02-12 18:10
2013.03.22
Chromium Embedded подскажите


15-1337286603
Юрий
2012-05-18 00:30
2013.03.22
С днем рождения ! 18 мая 2012 пятница


15-1347000404
ford
2012-09-07 10:46
2013.03.22
алгоритм для анализа изображения


15-1329381756
Pit
2012-02-16 12:42
2013.03.22
borland.ru


8-1230968832
night_light
2009-01-03 10:47
2013.03.22
Всех с наступившим! Полоска при выводе в Image с картинки...





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