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处理,但是为什么没反应?
-------------
你这里发送的是发送到主窗口的,你的CFileRecvDlg是主窗口类?
--》
SendMessage(WM_UPDATE_CHANNEL, 0, 0);
都是在CFileRecvDlg类中处理的,直接写成上面这样就可以了
SendMessage(WM_UPDATE_CHANNEL, 0, 0);
对么?
{
if(nIDEvent == 100)
{
KillTimer(100);
::SendMessage(AfxGetApp()->m_pMainWnd->GetSafeHwnd(),WM_UPDATE_CHANNEL,0,0);
SetTimer(100,3000,NULL);
}
CDialog::OnTimer(nIDEvent);
}