mfc获取窗口句柄的教程

在 MFC 中获取窗口句柄的方法与普通的 Windows 编程方法类似,可以使用 FindWindowFindWindowEx 等函数来查找窗口。具体方法如下:

  1. 使用 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(); // 获取窗口句柄
    // ...
}