如何获取对话框的处理程序(HWND)

时间:2014-02-08 06:52:28

标签: 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);
}

BEGIN_MESSAGE_MAP(CStatisticsDlg, CDialogEx)
END_MESSAGE_MAP()

2 个答案:

答案 0 :(得分:10)

假设您正在使用MFC(由标记指示),那么可能您有一个CDialog类实例。 CDialogCWnd的子类,因此您可以通过以下三种方式之一检索窗口句柄:

答案 1 :(得分:0)

这是方法。 首先创建主应用程序类的成员函数。 然后使用以下代码(假设类名称为 CGenericApp ,而您的Dialog类为 CGenericDlg

CWnd* CGenericApp::GetDlg()
{
    return m_pMainWnd;
}

然后,当您想将处理程序添加到主对话框时,请使用:

CGenericApp* app = (CGenericApp*)AfxGetApp();
CGenericDlg* pDlg = (CGenericDlg*)(app->GetDlg());
HWND win = pDlg->GetSafeHwnd();

'win'将持有您要查找的HWND。