Главная
Решение задач.
Справочные данные.
Формулы.
Программирование.
Как в Windows?
Разное.
Утилиты Windows.
Несправности принтеров.
BIOS по алфавиту.
Тесты.
Карта сайта.

Часы на 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йсик

Copyright © 2008-2011 Gruzincev Anton , St. Gorno-Altaysk, Russia, helpw@mail.ru