//类成员:
CModelessDlg *m_pModelssDlg;//初始
m_pModelssDlg=new CModelessDlg;//创建地方
m_pModelssDlg->Create(IDD_DLG_MODELESS);
m_pModelssDlg->ShowWindow(SW_SHOW);
BOOL CModelessDlg::OnInitDialog()
{
CDialog::OnInitDialog(); // TODO:  Add extra initialization here
SetTimer(1,2000,NULL);
return TRUE;  // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//timer 不能响应?
void CModelessDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
OnCancel();
CDialog::OnTimer(nIDEvent);
} //没有任何消息
BOOL CModelessDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
return CDialog::PreTranslateMessage(pMsg);
}为什么不能响应内 ?

解决方案 »

  1.   

    你在OnTimer里执行OnCancel是干什么?
      

  2.   


    那就改成
    TRACE0("\r\n[CModelessDlg] OnTimer");
    好了!
    我问的是为什么非模态对话框不能响应消息,不是 》。
      

  3.   

    发现 :
    BOOL CModelessDlg::OnInitDialog()
    {
        CDialog::OnInitDialog();    // TODO:  Add extra initialization here
        SetTimer(1,2000,NULL);
        return TRUE;  // return TRUE unless you set the focus to a control
        // EXCEPTION: OCX Property Pages should return FALSE
    }
    中的SetTimer(1,2000,NULL);  
    在主窗口中的void CMainDlg::OnTimer(UINT_PTR nIDEvent)
    {
        // TODO: Add your message handler code here and/or call default  
        CDialog::OnTimer(nIDEvent);
    } 得到响应,而没有传递到CModelessDlg中去
      

  4.   


    用向导加的你说呢?
    BEGIN_MESSAGE_MAP(CModelessDlg, CDialog)
    ON_BN_CLICKED(IDC_BUTTON1, &CModelessDlg::OnBnClickedButton1)
    ON_WM_TIMER()
    END_MESSAGE_MAP()
      

  5.   

    有没有在哪里执行KillTimer的操作?
      

  6.   

    Windows下面消息响应顺序:
    如果有某个窗体已经响应过消息,则消息不再进行传递。所有上面主窗体响应了,非模态对话框就不响应了
    如果是模态对话框,则会响应,因为模态对话框是当前对话框
      

  7.   

    //没有任何消息
    BOOL CModelessDlg::PreTranslateMessage(MSG* pMsg)
    {
        // TODO: Add your specialized code here and/or call the base class
        return CDialog::PreTranslateMessage(pMsg);
    }
      

  8.   

    调试看看m_pModelssDlg指针正不正常,或者m_hWnd有不有效
      

  9.   

    BOOL CModelessDlg::OnInitDialog()
    {
      CDialog::OnInitDialog();  // TODO: Add extra initialization here
      SetTimer(1,2000,NULL);
      return TRUE; // return TRUE unless you set the focus to a control
      // EXCEPTION: OCX Property Pages should return FALSE
    }
    中的SetTimer(1,2000,NULL);   
    在主窗口中的void CMainDlg::OnTimer(UINT_PTR nIDEvent)
    {
      // TODO: Add your message handler code here and/or call default   
      CDialog::OnTimer(nIDEvent);
    }  
    囧,你在
    CModelessDlg类的OnInitDialog中调用SetTimer();怎么在CMainDlg中处理WM_TIMER消息呢?
      

  10.   

    to (Eleven[兔子党组织部长]):不是我想,实际就是在CModelessDlg中无法接受消息,而是全部在CMainDlg 给截掉了!
      

  11.   

    是我搞错了,主窗口CMainDlg  也有一个时钟。但是我在CModelessDlg开的时钟 没有响应!
      

  12.   

    你把代码发过来
    [email protected]
      

  13.   

    犯了某些低级错误,或者你的主线程由于某些原因处于繁忙的状态。
    导致你的modlees窗口的任何消息都处于挂起状态