void CHeadDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
CDialog1 dialog1;
m_dialog1 = &dialog1;
::PostMessage(m_dialog1->m_hWnd, WM_MYMSG, NULL, NULL);
m_dialog1->DoModal();
}
void CDialog1::OnMyMsg(WPARAM wParam, LPARAM lParam)
{
m_headdlg = (CHeadDlg*)lParam;
}问题:OnMyMsg(...)函数根本执行不到。
就是说消息根本发不到CDialog1.请大大指出如何改,不要说m_dialog1->m_hWnd是错的。
我知道是错的。因为我得不到CDialog1的句柄。不知道怎么得到。

解决方案 »

  1.   

    m_dialog1->DoModal();   执行过程中,才弹出对话框,你关闭对话框,此函数才调用结束 
      

  2.   

    m_dialog1->DoModal();   执行过程中,才弹出对话框,你关闭对话框,此函数才调用结束 
      

  3.   

    你的想法可能实现不了
    第二行代码执行完后,对话框还不弹出来。
    第三行代码执行完后,对话框已经关闭。可以试试,无模式对话框
    Create
    ShowWindow
      

  4.   

    你的思路有点问题,DOModal()还没有执行时,按道理来说,也就是Dialog没有创建窗口,所以m_dialog1->m_hWnd是无效的。DOModal()一旦执行,消息就都传向了CDialog1,因为它是模式对话框。
    建议你用Create创建CDialog1,创建之后再Postmessage()
      

  5.   

    哎。。
    i服了you
    在刚才的帖子里我已经说了
    在没DoModal()之前,窗口没创建 不存在句柄
    你可以给CDialog1增加变量或者函数然后配合CDialog1::OnInitDialog完成你的工作 
      

  6.   

    而且还用什么指针
     CDialog1 dialog1;
      ::PostMessage(dialog1.m_hWnd, WM_MYMSG, NULL, NULL);
       dialog1.DoModal();    
      

  7.   

    DOModal()一旦执行,消息就都传向了CDialog1,因为它是模式对话框。
    这句话的意思不是你Postmessage的消息,而是鼠标、键盘等交互消息,也就是说你无法在通过上一级父窗口的按钮事件来PostMessage了