簡體   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