zoukankan      html  css  js  c++  java
  • 创建自己的窗口过程,创建自己的定时器

    a.创建自己的窗口过程AllocateHWnd,销毁DeallocateHWnd

    b.创建自己的定时器,在窗口过程响应WM_TIMER消息

    代码
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm1
    = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    private
    { Private declarations }
    WindowHandle: HWnd;
    public
    { Public declarations }
    procedure WndProc(var Msg:TMessage);
    procedure UpdateTimer;
    end;

    var
    Form1: TForm1;
    bSetTimer: Boolean
    = True;

    implementation

    {$R *.dfm}

    procedure TForm1.WndProc(var Msg: TMessage);
    begin
    with Msg do
    if Msg = WM_TIMER then
    try
    Caption :
    = FormatDateTime('HH:NN:SS',now);
    except
    Application.HandleException(Self);
    end
    else
    Result :
    = DefWindowProc(WindowHandle, Msg, wParam, lParam);
    end;

    procedure TForm1.UpdateTimer;
    begin
    KillTimer(WindowHandle,
    1);
    if bSetTimer then
    if SetTimer(WindowHandle, 1, 1, nil) = 0 then
    raise EOutOfResources.Create('Create Timer Error!');
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    WindowHandle :
    = AllocateHWnd(WndProc);
    if bSetTimer then UpdateTimer;
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    bSetTimer :
    = False;
    UpdateTimer;
    DeallocateHWnd(WindowHandle);
    end;

    end.

  • 相关阅读:
    简记配置tesorflow-gpu环境(吐血了)
    个人总结
    浪潮之巅阅读笔记03
    第十六周的学习进度条
    第十五周的学习进度条
    第十四的周学习进度条
    课堂练习-购书问题
    第二阶段—个人工作总结10
    第二阶段—个人工作总结09
    第二阶段—个人工作总结08
  • 原文地址:https://www.cnblogs.com/Jekhn/p/1913449.html
Copyright © 2011-2022 走看看