在任何时候,您可以通过使用以下命令获取指向CWindow类的指针:
DIM pWindow AS CWindow PTR = CAST(CWindow PTR, GetWindowLongPtr(hwnd, 0))
- or -
DIM pWindow AS CWindow PTR = AfxCWindowPtr(hwnd)
其中hwnd是其关联的窗口句柄的句柄。
如果主窗口的句柄不可用,则AfxCWindowOwnerPtr函数允许使用其任何子控件的句柄。
一个特殊情况是WM_CREATE消息。
在窗口回调中处理此消息的时候,CWindow尚未将指针存储在窗口类的额外字节中。
为了解决这个问题,当调用API函数CreateWindowEx来创建窗口时,Create方法将指针传递给lParam参数中的类。
可以使用以下命令在WM_CREATE中检索此指针:
CASE WM_CREATE
DIM pCreateStruct AS CREATESTRUCT PTR = CAST(CREATESTRUCT PTR, lParam)
DIM pWindow AS CWindow PTR = CAST(CWindow PTR, pCreateStruct->lpCreateParams)
- or -
CASE WM_CREATE
DIM pWindow AS CWindow PTR = AfxCWindowPtr(lParam)