CWnd::Attach 是 MFC 中 CWnd 类的一个公共方法,用于将一个窗口句柄(HWND)与 CWnd 对象关联起来。这个方法的作用是将已经存在的窗口与 MFC 中的 CWnd 对象进行绑定,使得你可以通过 CWnd 对象来操作该窗口。

函数原型如下:
void CWnd::Attach(HWND hWndNew);

其中,hWndNew 是要关联的窗口句柄。

使用 Attach 的主要场景是在已有的窗口上创建 MFC CWnd 对象。这通常在子类中使用,以便在 MFC 框架中使用 Windows 控件或者扩展功能。

以下是一个简单的示例,展示了如何使用 Attach 方法:
// 假设有一个已存在的窗口句柄 hWndExisting
HWND hWndExisting = ::CreateWindowEx(0, _T("STATIC"), _T("Hello, World!"), WS_OVERLAPPEDWINDOW,
                                    100, 100, 400, 200, NULL, NULL, AfxGetInstanceHandle(), NULL);

// 使用 CWnd 对象关联这个窗口句柄
CWnd myWnd;
myWnd.Attach(hWndExisting);

// 现在可以使用 myWnd 来操作 hWndExisting 关联的窗口
myWnd.ShowWindow(SW_SHOWNORMAL);

// 在合适的时候,可以调用 Detach 来解除关联
myWnd.Detach();

这个示例中,通过 Attach 方法将已存在的窗口句柄与 CWnd 对象关联,然后可以通过 CWnd 对象调用 MFC 提供的方法来操作这个窗口。最后,通过 Detach 方法解除关联,但通常在对象生命周期结束时会自动执行解除关联的操作。


转载请注明出处:http://www.zyzy.cn/article/detail/23426/MFC/CWnd