建立一个子对话框,设置成无边框的,把确定和取消键都删掉,然后只在对话框上放一张位图。然后在该对话框的构造函数中设定时器::SetTimer(this->GetSafeHwnd(),1,3000,NULL) ;然后添加WM_ONTIME。
void CDia::OnTimer(UINT nIDEvent) 
{
CDialog::OnOK();
CDialog::OnTimer(nIDEvent);
}在主对话框中点击按钮显示子对话框,
void CMyDlg::OnButton1() 
{
CDia dia;      //建立对象后应该启动定时器
dia.DoModal();
}
想实现3秒后自动关闭子对话框。
但是现在,关闭不了,这是什么原因?怎么改?

解决方案 »

  1.   

    定时器没启动!你的dia.DoModal();把SetTimer消息阻塞了
      

  2.   

     模态对话框阻塞消息循环,没法处理WM_TIMER消息了
      

  3.   

    SetTimer太早了,不要在构造函数中,构造函数中hwnd还是NULL,DoModal中对话框hwnd才开始创建SetTimer放到OnInitDialog中
      

  4.   

    GetLastError.感觉穿null也可以!
      

  5.   

    窗口句柄和回调函数都为null,这样的定时器无法响应
      

  6.   

    在CDia的OnShowWindow里
    SetTimer(NULL,3000,NULL);
      

  7.   

    这才是正解。
    构造函数中 窗口句柄为NULL,连个消息循环都没有,你的定时器消息肯定也没有。