您好我已经创建了一个对话框,它已经开始了。
我的问题是:你如何检索它的手柄?
另外,如果你得到句柄,你会如何更改其中的静态文本控制文本?
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()
答案 0 :(得分:10)
假设您正在使用MFC(由标记指示),那么可能您有一个CDialog
类实例。 CDialog
是CWnd
的子类,因此您可以通过以下三种方式之一检索窗口句柄:
m_hWnd
成员operator HWND()
HWND
GetSafeHwnd()
答案 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。