Часы на win API (Delphi)
Program Api_Clock;
uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms, Dialogs;
var
Объявляем глобальные переменные
window:TWndClassEx;
Mwindow,Edit1,Edit2,Edit3: HWND;
Mmsg: MSG;
seku,minu,chas:integer;
procedure TimerProc(Handle:HWND;uMsg:DWORD;
PidEvent:DWORD;dwTime:DWORD);stdcall;
begin
//Если прошло 60 секунд то обнуляем переменную seku
и увеличиваем минуты на единицу
if seku=60 then begin
inc(minu);
seku:=0;
end;
//Если прошло 60 минут то обнуляем переменную minu
и увеличиваем часы на единицу
if minu=60 then begin
inc(chas);
minu:=0;
end;
//Если прошло 24 часа то обнуляем все переменные
if chas=24 then begin
minu:=0;
seku:=0;
minu:=0;
end;
//увеличиваем секунды на еденицу
inc(seku);
//Выводим полученные значения времени в поля ввода
// Setwindowtext(Хэндл_окна,Содержимое окна тип_pchar) ;
Setwindowtext(Edit3,pchar(inttostr(chas))) ;
Setwindowtext(Edit2,pchar(inttostr(minu))) ;
Setwindowtext(Edit1,pchar(inttostr(seku))) ;
end;
Функция обработки событий
function windowproc(wnd: hwnd; msg: integer;
wparam: wparam; lparam: lparam):lresult;stdcall;
begin
case msg of
wm_destroy: begin
postquitmessage(0);
result := 0;
exit;
end;
else
result := defwindowproc(wnd,msg,wparam,lparam);
end;
end;
Основная часть программы
begin
//Начальное значение времени
seku:=0;
minu:=0;
chas:=0;
//Запускаем таймер
//settimer(Хэндл_окна, Идентификатор_таймера,
милисекунды, @Функция );
settimer( 0, 9, 1000, @TimerProc );
//Определяем параметры для окна
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','Часы',
WS_OVERLAPPEDWINDOW,100,100,300,300,0,0,
Hinstance,nil);
SHOWWINDOW (Mwindow,SW_Show);
Edit1 := CreateWindowEx(0,'edit','',WS_child,155,30,20,20,
mwindow,1,Hinstance,nil);
SHOWWINDOW (Edit1,sw_show);
Edit2 := CreateWindowEx(0,'edit','',WS_child,125,30,20,20,
mwindow,2,Hinstance,nil);
SHOWWINDOW (Edit2,sw_show);
Edit3 := CreateWindowEx(0,'edit','',WS_child,95,30,20,20,
mwindow,3,Hinstance,nil);
SHOWWINDOW (Edit3,sw_show);
while GetMessage (Mmsg,0,0,0) do begin
TranslateMessage (Mmsg);
DispatchMessage (Mmsg);
end;
end.
Web программирование Pascal&Delphi Бeйсик
|