在 MFC 中获取窗口句柄的方法与普通的 Windows 编程方法类似,可以使用 FindWindow
或 FindWindowEx
等函数来查找窗口。具体方法如下:
- 使用
FindWindow
函数来查找窗口。
HWND hwnd = ::FindWindow(NULL, _T("窗口标题"));
其中,第一个参数为窗口类名,如果为 NULL 则表示查找所有窗口;第二个参数为窗口标题,可以为 NULL 或空字符串。
2. 使用 FindWindowEx
函数来查找子窗口。
HWND hwndParent = ::FindWindow(NULL, _T("父窗口标题")); HWND hwndChild = ::FindWindowEx(hwndParent, NULL, NULL, _T("子窗口标题"));
其中,第一个参数为父窗口句柄,第二个参数为子窗口句柄,可以为 NULL;第三个参数为子窗口类名,可以为 NULL;第四个参数为子窗口标题,可以为 NULL 或空字符串。
3. 使用 MFC 的 CWnd
类的成员函数来获取窗口句柄。
CWnd* pParentWnd = AfxGetMainWnd(); // 获取主窗口句柄 HWND hwnd = pParentWnd->GetSafeHwnd(); // 获取主窗口句柄
其中,AfxGetMainWnd
函数用于获取主窗口的指针,GetSafeHwnd
函数用于获取窗口句柄。 需要注意的是,在使用 MFC 的 CWnd
类的成员函数获取窗口句柄时,必须保证窗口已经创建。如果窗口还未创建,可以在 OnInitDialog
函数中创建窗口,然后再获取窗口句柄。例如:
BOOL CMyDialog::OnInitDialog() { CDialog::OnInitDialog(); Create(IDD_MY_DIALOG, this); // 创建窗口 HWND hwnd = GetSafeHwnd(); // 获取窗口句柄 // ... }
评论