在VCL中很容易定义私有的过程,来接收WM_TIMER定时触发一个事件。可是菜鸟我就不懂了,怎样才能定时让一个没有窗体的程序也定时触发一个事件呢?怎样才能让一个没有窗体的程序也能驻留,而不是一执行就结束了。主要用到Settimer,Killtimer,要是非VCL的哈,谢谢各位前辈了~

解决方案 »

  1.   

    建议不是因为程序体积的话,还是用隐藏 Form 的办法简单,一切控件都可以用了。
    在工程文件中加入
    begin
    ......
    application.showmainform:=false;
    ......
    end;
    在FORM1上放你需要的控件。
    否则你要处理很多事件消息,比如:
    while GetMessage(msg, 0, 0, 0) do
      DispatchMessag(msg);
      

  2.   

    自己创建Timer控件,控制它的行为
    with TTimer.Create.....
      

  3.   

    如果不使用隐藏窗体,你需要控制所有的消息循环。
    何苦舍弃优秀的vcl模式,自己重新写代码呢?那岂不是和在用Turbo c++3一样了,什么都要自己完成。
      

  4.   

    program Project1;uses
      Windows,
      messages;{$R *.RES}var
      msg: TMsg;
      hTimer: THandle;
    begin
      hTimer := SetTimer(0,0,2000,nil);
      While(GetMessage(msg,0,0,0)) do
      begin
        if msg.message = WM_TIMER then
          MessageBox(0,'','',MB_OK);
      end;
      KillTimer(0,hTimer);
    end.
      

  5.   

    拜托,这里是WIN32 API区,我就喜欢API,要用VCL的高手请到专区去~~谢谢cuihl()的解答