怎样在CMyDlgDlg类中声明CModallessDlg类的指针m_pModallessDlg,并初始化
请说明具体声明位置。

解决方案 »

  1.   

    include "CModallessDlg.h";class CMyDlgDlg
    {
      CModallessDlg * m_pModallessDlg;
    }不是这样吗?是否你没有定义头文件阿。
      

  2.   

    直接声明,即类名 *指针变量名;然后在实现文件中用new生成对象
      

  3.   

    class CModallessDlg;
    class CMyDlgDlg
    {
      CModallessDlg * m_pModallessDlg;
    }
      

  4.   

    在头文件中定义
     CModallessDlg * m_pModallessDlg;
    在OnInitDialog()中赋值
     pModallessDlg = new CModallessDlg();
      

  5.   

    没有初始化呀,就像以下代码那样:
    CMenu* pSysMenu = GetSystemMenu(FALSE);用new就不用初始化吗
      

  6.   

    CModallessDlg是我定义的一个按钮可以打开的窗口,书上让我在CMyDlgDlg中先声明一个指针,
    代码如下:
    void CMyDlgDlg::OnShowModalless() 
    {
    // TODO: Add your control notification handler code here
        if(!m_pModallessDlg) //测试无模式对话框是否被销毁
    { //如果没有无模式对话框的指针,则创建一个
    m_pModallessDlg=new CModallessDlg(this);
    if(m_pModallessDlg->Create(IDD_MODALLESS_DIALOG,NULL)==TRUE)
    GetDlgItem(IDC_BMODALLESS)->EnableWindow(FALSE);
    }
    m_pModallessDlg->ShowWindow(SW_SHOW);
    /* CModallessDlg dlg;
    dlg.DoModal();*/
    }
      

  7.   

    在你的CMyDlgDlg.h加入
    include "CModallessDlg.h";class CMyDlgDlg
    {
    // 指针定义
      CModallessDlg * m_pModallessDlg = null;
    }那么在你的CMyDlgDlg::OnShowModalless()就可以用 if(!m_pModallessDlg)了
    第一次访问OnShowModalless函数时,由于初始值为NULL,所以将会构建一个新的CModallessDlg 对象PS: if(!m_pModallessDlg) 改为 if(m_pModallessDlg == NULL)会清晰些
      

  8.   

    --------------------Configuration: MyDlg - Win32 Debug--------------------
    Compiling...
    ModallessDlg.cpp
    e:\我的程序\mfc\mydlg\mydlgdlg.h(40) : error C2252: 'm_pModallessDlg' : pure specifier can only be specified for functions
    MyDlg.cpp
    e:\我的程序\mfc\mydlg\mydlgdlg.h(40) : error C2252: 'm_pModallessDlg' : pure specifier can only be specified for functions
    MyDlgDlg.cpp
    e:\我的程序\mfc\mydlg\mydlgdlg.h(40) : error C2252: 'm_pModallessDlg' : pure specifier can only be specified for functions
    E:\我的程序\MFC\MyDlg\MyDlgDlg.cpp(186) : error C2065: 'm_pModallessDlg' : undeclared identifier
    E:\我的程序\MFC\MyDlg\MyDlgDlg.cpp(188) : error C2440: '=' : cannot convert from 'class CModallessDlg *' to 'int'
            This conversion requires a reinterpret_cast, a C-style cast or function-style cast
    E:\我的程序\MFC\MyDlg\MyDlgDlg.cpp(189) : error C2227: left of '->Create' must point to class/struct/union
    E:\我的程序\MFC\MyDlg\MyDlgDlg.cpp(192) : error C2227: left of '->ShowWindow' must point to class/struct/union
    Generating Code...
    Error executing cl.exe.MyDlg.exe - 7 error(s), 0 warning(s)是怎么回事?我按照greenery(greenery)的方法做了,本来一个错误也没的
      

  9.   

    CModallessDlg * m_pModallessDlg = null;
    --->
    CModallessDlg * m_pModallessDlg;不要初始化~
      

  10.   

    fisker0303(天塌了,地陷了,小花狗不见了.)说得对,类里面的变量不能这么初始化。