我做了一个对话框,上面就是一张位图,希望对话框在程序一启动时,就弹出来.3秒后关闭.但是,就是不知道在哪里 可以设置 对话框 显示的时间??请各位大虾帮忙!是不是用到SetTimer  ,   OnTimer 等等.... 用的话应该怎么用??

解决方案 »

  1.   

    BOOL CDiaDlg::OnInitDialog()
    {
     ....  SetTimer(1,   1000,   NULL) ;  //第一个是事件编号,第2是事件, 第3个是回调函数.可以不要}
    在类视图里选类...然后重载ontime消息...里面判断
    闹钟编号,执行响应操作..
    void CDiaDlg::OnTimer(UINT nIDEvent) 
    {
    if(nIDEvent==1)    //就是自己编的那个//
    AfxMessageBox("");
    CDialog::OnTimer(nIDEvent);
    }在这里加上退出代码 就可以了..
      

  2.   

    从CDialog派生出一个对话框的类CSplashDlg,然后重装OnTimer函数,设置一个成员函数m_nSecond初始化它为0,然后在OnInitDialog中加入SetTimer(0,1000,NULL);然后再编写OnTimer函数
    void CSplashDlg::OnTimer(UINT nIDEvent)
    {
       ++m_nSecond;
       if(m_nSecond == 3)
       {
           KillTimer(0);
           this->OnOK();
       }
       CSplashDlg::OnTimer(nIDEvent);
    }调用的时候就可以这样
    #include "SplashDlg.h"CSplashDlg* dlg = new CSplashDlg(this);if(!dlg) return;
    dlg->Create(IDD_MY_DIALOG,this);
    dlg->DoModal();
    delete dlg;
      

  3.   

    错了,这句CSplashDlg::OnTimer(nIDEvent);应该换成CDialog::OnTimer(nIDEvent);
      

  4.   


    SetTimer( 1 , 3000 , NULL );响应 OnTimer 函数,关闭窗口即可。
      

  5.   

    如果怕麻烦,你也可以sleep(1000)执行三次啊,不过效果肯定没有settimer好
      

  6.   

    BOOL CDiaDlg::OnInitDialog()
    {  SetTimer(0,   3000,   NULL) ;   AfxMessageBox();
    }BOOL CDdDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if(pMsg->message==WM_TIMER)
    {
    KillTimer(0);//关闭
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  7.   

    BEGIN_MESSAGE_MAP(CRunMDlg, CDialog)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_CLOSE()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
    ON_WM_TIMER()             //这句别忘记了
    END_MESSAGE_MAP()