提示信息时,过了一定时间,用户没给ID_OK或ID_CANNEL操作,则自动关闭,默认处理一些功能,该如何做?请高手指教?????

解决方案 »

  1.   

    没弄明白,请说详细点??谢谢。
    其实,我意思是,ShowMessage,MessageBox,MessageDlg后,不是有消息框产生的么?消息框带有‘确定’、‘取消’,‘Yes’,'No'等Button,用户按了Button之后,消息框才关闭消失。我想要的效果了,用户不按Button,而自动关闭消息框。
      

  2.   

    不可以用ShowMessage,MessageBox,MessageDlg,因为是ShowModal的,一直会等待用户回应,用自己写的函数代替ShowMessage,MessageBox,MessageDlg:就可以了:
    function ShowMsg(const STitle,SText:String:String;const ITimeOut:Integer):Integer;
    var aFrm:TMyTimerForm;
    begin
      aFrm:=TMyTimerForm.Create(nil);
      try
        aFrm.Caption:=STitle;
        aFrm.Label1.Caption:=SText;
        result:=aFrm.ShowModal=mrOK;
      finally
        aFrm.Free;
      end;
    end;
    //在TMyTimerForm加入定时器。
      

  3.   

    可以重载TApplication的消息处理函数,当收到WM_ENTERIDLE的时候
    启动一个线程,然后给模式对话框发送WM_QUIT消息申明:以上方法只是一个思路,本人没有试过MSDN里搜到的
    -----------------------------------------
    对话框分两种类型,模式对话框和无模式对话框。
    模式对话框 一个模式对话框是一个有系统菜单、标题栏、边线等的弹出式窗口。在创建对话框时指定WS_POPUP, WS_SYSMENU, WS_CAPTION和 DS_MODALFRAME风格。即使没有指定WS_VISIBLE风格,模式对话框也会被显示。创建对话框窗口时,将发送WM_INITDIALOG消息(如果指定对话框的DS_SETFONT风格,还有WM_SETFONT消息)给对话框过程。对话框过程(Dialog box procedure)不是对话框窗口的窗口过程(Window procedure)。在Win32里,对话框的窗口过程由Windows系统提供,用户在创建对话框窗口时提供一个对话框过程由窗口过程调用。对话框窗口被创建之后,Windows使得它成为一个激活的窗口,它保持激活直到对话框过程调用::EndDialog函数结束对话框的运行或者Windows激活另一个应用程序为止,在激活时,用户或者应用程序不可以激活它的所属窗口(Owner window)。从某个窗口创建一个模式对话框时,Windows自动地禁止使用(Disable)这个窗口和它的所有子窗口,直到该模式对话框被关闭和销毁。虽然对话框过程可以Enable所属窗口,但是这样做就失去了模式对话框的作用,所以不鼓励这样做。Windows创建模式对话框时,给当前捕获鼠标输入的窗口(如果有的话)发送消息WM_CANCLEMODE。收到该消息后,应用程序应该终止鼠标捕获(Release the mouse capture)以便于用户能把鼠标移到模式对话框;否则由于Owner窗口被禁止,程序将失去鼠标输入。为了处理模式对话框的消息,Windows开始对话框自身的消息循环,暂时控制整个应用程序的消息队列。如果Windows收到一个非对话框消息时,则它把消息派发给适当的窗口处理;如果收到了WM_QUIT消息,则把该消息放回应用程序的消息队列里,这样应用程序的主消息循环最终能处理这个消息。当应用程序的消息队列为空时,Windows发送WM_ENTERIDLE消息给Owner窗口。在对话框运行时,程序可以使用这个消息进行后台处理,当然应该注意经常让出控制给模式对话框,以便它能接收用户输入。如果不希望模式对话框发送WM_ENTERIDlE消息,则在创建模式对话框时指定DS_NOIDLEMSG风格。一个应用程序通过调用::EndDialog函数来销毁一个模式对话框。一般情况下,当用户从系统菜单里选择了关闭(Close)命令或者按下了确认(OK)或取消(CANCLE)按钮,::EndDialog被对话框过程所调用。调用::EndDialog时,指定其参数nResult的值,Windows将在销毁对话框窗口后返回这个值,一般,程序通过返回值判断对话框窗口是否完成了任务或者被用户取消。