您的位置:首页 > 其它

居然还有WM_TIMECHANGE(只在用户手动改变系统时间时才会产生作用)

2015-08-21 17:05 441 查看
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;
const
TIMER_ID = 200;
type
TForm1 = class(TForm)
Label1: TLabel;
btkilltime: TButton;
btsettime: TButton;
procedure Button1Click(Sender: TObject);
procedure btkilltimeClick(Sender: TObject);
procedure btsettimeClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
// WM_TIMECHANGE只在用户手动改变系统时间时才会产生作用,且只需直接定义就起作用。
procedure WMTIMECHANGE(var Message: TWMTIMECHANGE); message WM_TIMECHANGE;
// WM_TIMER需配合KillTimer和SetTimer才能起作用;它保持与系统时间同步触发事件;
procedure WMTimer(var Message: TWMTimer); message WM_TIMER;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WMTIMECHANGE(var Message: TWMTIMECHANGE);
begin
ShowMessage('sss');
end;

procedure TForm1.WMTimer(var Message: TWMTimer);
begin
Label1.Caption:=TimeToStr(now);
end;

procedure TForm1.btkilltimeClick(Sender: TObject);
begin
// KillTimer作用:向WINDOWS删除时间消息;参数200必须与SetTimer中参数200保持一致,此参数代表所注册的消息ID;
KillTimer(self.Handle, 200); // KillTimer(self.Handle, TIMER_ID);
end;

procedure TForm1.btsettimeClick(Sender: TObject);
begin
// SetTimer作用:向WINDOWS注册时间消息;参数1000代表每隔1秒触发一次WM_TIMER消息;
SetTimer(self.Handle, 200, 1000, nil); // SetTimer(self.Handle, TIMER_ID, 1000, nil);
end;

end.


参考:http://www.cnblogs.com/key-ok/p/3417728.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: