static CWnd* PASCAL FromHandlePermanent(HWND hWnd);
它也接受一个窗口句柄 hWnd 作为参数,返回与该句柄相关联的CWnd对象的指针。与CWnd::FromHandle 不同的是,CWnd::FromHandlePermanent 会增加返回的 CWnd 对象的引用计数。这意味着在使用完该对象后,你需要负责调用 Release 方法来减少引用计数,以确保正确地释放资源。
示例代码:
HWND hWnd = ::CreateWindow(
_T("BUTTON"), // 窗口类名
_T("Click me"), // 窗口标题
WS_OVERLAPPEDWINDOW, // 窗口样式
CW_USEDEFAULT, // 窗口位置 x
CW_USEDEFAULT, // 窗口位置 y
200, // 窗口宽度
100, // 窗口高度
NULL, // 父窗口句柄
NULL, // 菜单句柄
AfxGetInstanceHandle(), // 应用程序实例句柄
NULL // 附加参数
);
// 使用 CWnd::FromHandlePermanent 获取对应的 CWnd 对象
CWnd* pWnd = CWnd::FromHandlePermanent(hWnd);
if (pWnd != NULL)
{
// 使用 pWnd 操作窗口
// 使用完毕后,需要调用 Release 方法减少引用计数
pWnd->Release();
}
CWnd::FromHandlePermanent 的使用场景一般较少见,通常在特殊情况下需要显式管理引用计数时使用。在一般情况下,使用 CWnd::FromHandle 足以满足窗口句柄到CWnd对象的映射需求。
转载请注明出处:http://www.pingtaimeng.com/article/detail/23295/MFC/CWnd