我想在非模态对话框中一个子窗体中控制其父窗体的几个按钮的使用状体,但是总是出错,大家帮我看看什么原因? 非常感谢!
父窗体
class CDlgModifyDEMEle : public CDialog
{
CButton m_SetLineCTL;
CButton m_DELCTL;
CButton m_NOTSETCTL;
CButton m_SETCTL;
public:
CModifyDEMEleBar m_ModifyEleBar;
public: 
        void EnableButton(bool isEnabled,int nIndex);
}void CDlgModifyDEMEle::EnableButton(bool isEnabled,int nIndex)
{
    //有问题? 为什么?
if(nIndex == 1 || nIndex == 3)
{
   m_DELCTL.EnableWindow(isEnabled);
   m_DivLineEDIT.EnableWindow(isEnabled);
   m_SetLineCTL.EnableWindow(isEnabled);
}
    if(nIndex == 2 || nIndex == 3)
{
m_EnlargeEDIT.EnableWindow(isEnabled);
m_NOTSETCTL.EnableWindow(isEnabled);
m_SETCTL.EnableWindow(isEnabled);
}
}
子窗体
class CModifyDEMEleBar : public CWnd我在子窗体的某个函数中这样调用的
CDlgModifyDEMEle * pDlg = (CDlgModifyDEMEle *)this->GetParent();pDlg->EnableButton(*,*);出错的时候是说 各个按钮的m_hWnd 为空。我用GetDlgItem 也得到一个空的指针。
HWND hWndControl = ::GetDlgItem(pDlg->m_hWnd, IDC_BUTTON_SET);
pDlg->GetDlgItem(IDC_BUTTON_SET,&hWndControl);我用发送消息的形式
HRESULT hr= ::SendMessage(pDlg->m_hWnd,WM_ENABLE_BUTTON,wParam,lParam);
消息发送成功,但是父窗体就是得不到该消息.我无解了,郁闷了,无语了……大家帮忙诊断一下,为什么会这样呢?

解决方案 »

  1.   

    CDlgModifyDEMEle * pDlg = (CDlgModifyDEMEle *)this->GetParent();
    这句拿到的父窗口对不对?
      

  2.   

    CDlgModifyDEMEle是不是CLASSWIZARD自动生成的?不是的话,把CDlgModifyDEMEle删了重加.
      

  3.   

    父窗口是对的啊,我用该父窗口的指针可以调用其它函数,就是不能调用这个……
    确实不是CLASSWIZARD自动生成的,但该写的我都写了阿,这个影响大么?
      

  4.   

    哦?搞错了,CDlgModifyDEMEle是利用CLASSWizard生成的,但是CModifyDEMEleBar  不是的