单击某菜单项,弹出对话框A,A中有edit控件am,列表控件bt,按钮A1,am="bbbb";单击A1,弹出对话框B
B中有按钮B1,单击B1,需要向A发送WM_A消息,A有WM_A消息处理函数,由于刷新bt控件,同时修改am的值为“9999999“;现在在B1的处理函数中使用
CA *p=(CA *)AfxGetMainWnd()->GetDlgItem(A的ID)得到的指向A的指针为空,不能继续
p->am="99999";操作,同时使用p->SendMessage(WM_A,0,0)失败,请出招,谢谢!!!

解决方案 »

  1.   

    调用错了, AfxGetMainWnd()是用来得到CFrameWnd的子类的,你的是对话框CDialog的,你应该在单机A1按钮的时候将A对话框的句柄或指针传到B去,然后再在B里面进行操作
      

  2.   

    或者,定义一个全局变量来保存A的句柄: HWND   m_hAdlgWnd;   当初始化A时,更新一次他的值:
       m_hAdlgWnd = m_hWnd;(在A的OnInitDialog中),这样在B中就可以用他来向A发消息了.
      

  3.   

    CA *p=(CA *)AfxGetMainWnd()->GetDlgItem(A的ID)GetDlgItem是用来获取子窗口控件句柄的, 不可以用来获取对话框句柄
    再有, 对话框CA也并不属于AfxGetMainWnd()你应该在创建B对话框时把A对话框的句柄传递过去