[英]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
類實例。 CDialog
是CWnd
的子類,因此您可以通過以下三種方式之一檢索窗口句柄:
m_hWnd
成員operator HWND()
將其轉換為HWND
GetSafeHwnd()
這是如何做到的。 首先為主應用程序類創建一個成員函數。 然后使用以下代碼(假設類名是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.