繁体   English   中英

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

[英]How to get handler(HWND) for dialog box

嗨,我创建了一个对话框,它可以工作。

我的问题是:你如何检索它的句柄?

另外,如果您获得了句柄,您将如何更改其中的静态文本控件文本?

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()

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

这是如何做到的。 首先为主应用程序类创建一个成员函数。 然后使用以下代码(假设类名是CGenericApp ,你的 Dialog 类是CGenericDlg

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

然后,当您想获得主对话框的处理程序时,请使用:

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

'win' 将保存您正在寻找的 HWND。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM