LRESULT CFileRecvDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
if(message == WM_UPDATE_PROGRAM)
{
AfxMessageBox("WM_UPDATE_PROGRAM");
}
if(message == WM_UPDATE_CHANNEL)
{
AfxMessageBox("WM_UPDATE_CHANNEL");//希望出现这个BOX
} return CDialog::DefWindowProc(message, wParam, lParam);
}
void CFileRecvDlg::OnTvnSelchangedChannelTree(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;

HTREEITEM hItem = m_ChannelTree.GetSelectedItem();
::SendMessage(AfxGetApp()->m_pMainWnd->GetSafeHwnd(),WM_UPDATE_CHANNEL,0,0);
SetTimer(100,3000,NULL);
}
void CFileRecvDlg::OnTimer(UINT_PTR nIDEvent)
{
if(nIDEvent == 100)
{
KillTimer(100);

HTREEITEM hItem = m_ChannelTree.GetSelectedItem();
::SendMessage(AfxGetApp()->m_pMainWnd->GetSafeHwnd(),WM_UPDATE_CHANNEL,0,0);
SetTimer(100,3000,NULL);
}
CDialog::OnTimer(nIDEvent);
}我在一个对话框上创建了多个控件,希望让对话框的消息处理函数分别响应他们的消息,现在写了一个简化版,在树控件的两个事件响应函数里发送消息希望DefWindowProc处理,但是为什么没反应?

解决方案 »

  1.   

    ::SendMessage(AfxGetApp()->m_pMainWnd->GetSafeHwnd(),WM_UPDATE_CHANNEL,0,0);
    -------------
    你这里发送的是发送到主窗口的,你的CFileRecvDlg是主窗口类?
      

  2.   

    ::SendMessage(AfxGetApp()->m_pMainWnd->GetSafeHwnd(),WM_UPDATE_CHANNEL,0,0);
    --》
    SendMessage(WM_UPDATE_CHANNEL, 0, 0);
    都是在CFileRecvDlg类中处理的,直接写成上面这样就可以了
      

  3.   

    CFileRecvDlg是主对话框的类,我的控件都是放在这个对话框上的。就像你3楼说的那样
    SendMessage(WM_UPDATE_CHANNEL, 0, 0);
    对么?
      

  4.   

    昨天晚上发现貌似是树状控件没有初始化的原因才导致不响应消息。不过就算把OnTimer里关于树的部分去掉也没反应是咋回事?void CFileRecvDlg::OnTimer(UINT_PTR nIDEvent)
    {
        if(nIDEvent == 100)
        {
            KillTimer(100);
            ::SendMessage(AfxGetApp()->m_pMainWnd->GetSafeHwnd(),WM_UPDATE_CHANNEL,0,0);
            SetTimer(100,3000,NULL);
        }
        CDialog::OnTimer(nIDEvent);
    }