导航:  CWindow Class > Tutorial >

Getting a pointer to the CWindow class

上一页返回章节概述下一页

在任何时候,您可以通过使用以下命令获取指向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)