m_hWnd成员变量为null

时间:2014-02-08 14:23:03

标签: c++ mfc

我正在尝试使用以下代码获取对话框的句柄:

class CStatisticsDlg : public CDialogEx
{
public:
    CStatisticsDlg();

// Dialog Data
    enum { IDD = IDD_STATISTICS };

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

// Implementation
protected:
    DECLARE_MESSAGE_MAP()
public:
};

CStatisticsDlg::CStatisticsDlg() : CDialogEx(CStatisticsDlg::IDD)
{
}

void CStatisticsDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    //  DDX_Control(pDX, IDC_FUCK, m_fuck);
}

BEGIN_MESSAGE_MAP(CStatisticsDlg, CDialogEx)
END_MESSAGE_MAP()

但是当我用这个创建一个类的实例时:

CStatisticsDlg statisticsDlg;

并尝试通过statisticsDlg.m_hWnd获取句柄,句柄为空。

为什么会这样?获取对话框句柄的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

创建过程中你可以获得m_hWnd的第一点是对话框的OnInitDialog函数。在DoModal调用之前,m_hWnd不存在,并且在DoModal返回后不存在。

答案 1 :(得分:0)

尝试无模式对话框模型。使用create函数代替domodal。在create调用开始之前,m_hWnd不存在。