Главная страница
    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.064 c
15-1332614719
wl
2012-03-24 22:45
2013.03.22
Про коньяк на др. Дубль 2


15-1352808457
AV
2012-11-13 16:07
2013.03.22
Number Oracle и числа в "православной". Не хватает Cardinal`a


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


15-1331384899
Дмитрий С
2012-03-10 17:08
2013.03.22
Блокировка файла.


3-1276260200
_REA
2010-06-11 16:43
2013.03.22
ADO, dbGo, пробелы в строках





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