在属性页中定义一个函数,此函数要求打开一个对话框
对话框类的构造函数为:
CAcqDlg::CAcqDlg(CWnd* pParent, SapAcquisition *pAcq)
: CDialog(CAcqDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAcqDlg)
m_extTrigEnable = FALSE;
//}}AFX_DATA_INIT
m_pAcq = pAcq;
}
要在函数中定义一个此对话框类的对象
请问其中CWnd* pParent应该是什么呀,是指向属性页的窗口的指针吗?
如果是应该怎么得到呢?很弱智的问题,呵呵,谢谢

解决方案 »

  1.   

    如果希望该对话框的父窗口为应用程序主窗口,则指定 pParent 为NULL,
    即  CAcqDlg dlg( NULL, pAcq );
    如果希望属性页窗口为该对话框的父窗口,则指定 pParent 为 this,
    即 CAcqDlg dlg( this, pAcq );
      

  2.   

    但是两种我都试验过,为什么dlg得不到窗口句柄呢
      

  3.   

    这样调用dlg.doModal()是就出现异常了
      

  4.   

    dlg 得不到窗口句柄?哪个窗口的句柄?
    出现异常?跟踪一下,是哪里抛出异常?
      

  5.   

    异常提示:
    Unhandled exception in Adv.exe(SAPCLASSGUI42D.DLL):0XC0000005:Access Violation
    不知是不是和动态链接库有关?那个动态链接库是加上去的
      

  6.   

    你的对话框是从动态链接库中载入的吗?
    使用 DEBUG 模式,看看是哪条代码抛出的异常
      

  7.   

    就是在创建动态链接库中对话框的对象时出现异常
    在执行 CCamVicDlg dlg(this, NULL);时出异常
    CCamVicDlg是在动态链接库中定义的对话框资源
    麻烦再帮我分析一下到底哪出问题了
      

  8.   

    异常提示的是:
    "0X73dca331"指令引用的“0x00000080”内存。该内存不能为read
      

  9.   

    你尝试着在DLL中导出一个函数
    __declspec(dllexport) ShowDialog(CWnd* pWnd)
    {
     AFX_MANAGE_STATE(AfxGetStaticModuleState()); 
     CCamVicDlg dlg(pWnd, NULL);
     dlg.DoModal();
    }
    在你的EXE中声明
    __declspec(dllimport) ShowDialog(CWnd* pWnd);然后在合适的地方调用
    ShowDialog(this);