在 MFC 中,CWnd::FromHandlePermanent 是一个静态成员函数,用于通过窗口句柄获取对应的 CWnd 对象的指针。与 CWnd::FromHandle 不同的是,CWnd::FromHandlePermanent 会将创建的 CWnd 对象添加到永久对象集中,以确保该对象在应用程序的生命周期内一直存在。以下是该函数的原型:
static CWnd* PASCAL FromHandlePermanent(HWND hWnd);

参数说明:
  •  hWnd:要获取 CWnd 指针的窗口句柄。


返回值:
  •  如果函数调用成功,则返回指向 CWnd 对象的指针;否则返回 NULL。


使用示例:
HWND hwnd = ::CreateWindowEx(0, _T("STATIC"), _T("Hello, MFC!"),
    WS_OVERLAPPEDWINDOW, 100, 100, 400, 200,
    NULL, NULL, AfxGetInstanceHandle(), NULL);

if (hwnd != NULL) {
    CWnd* pWnd = CWnd::FromHandlePermanent(hwnd);
    if (pWnd != NULL) {
        // 成功获取到 CWnd 指针,对象被添加到永久对象集中
    }
}

在上述示例中,通过 ::CreateWindowEx 创建了一个窗口,并通过 CWnd::FromHandlePermanent 函数获取了对应的 CWnd 对象的指针。这个对象将被添加到永久对象集中,确保在应用程序的生命周期内一直存在。请注意,使用 FromHandlePermanent 函数时,确保传入的窗口句柄是有效的。


转载请注明出处:http://www.pingtaimeng.com/article/detail/23459/MFC/CWnd