WTL CWindowImpl 是不是与 CWnd 兼容?

Posted

技术标签:

【中文标题】WTL CWindowImpl 是不是与 CWnd 兼容?【英文标题】:Does WTL CWindowImpl compatible with CWnd?WTL CWindowImpl 是否与 CWnd 兼容? 【发布时间】:2017-06-07 12:46:03 【问题描述】:

我有简单的视频播放器。

https://github.com/sailfish009/sample_video

现在我想将它移植到 windows 模板库 9.1。

编辑:已解决,CWindowImpl 的处理程序与 CWnd 的兼容。

//screen = SDL_CreateWindowFrom(this->m_hWnd); //HWND from CWnd previous working code
screen = SDL_CreateWindowFrom(m_hWndClient);   //HWND from CWindowImpl

【问题讨论】:

解决了!我在设置宽度和高度时犯了一个错误。 CWindowImpl 中的 HWND 和 CWnd 完全相同。 【参考方案1】:

问题问错了。您不寻找兼容性,您只是寻找访问HWND窗口句柄的方法。

不,这些类是不兼容的,更多的是它们在概念上是不同的。在 ATL/WTL 中,CWindowImpl 是一个实现窗口过程的类。这样的过程通常是一个静态函数,帮助类将其“附加”到 C++ 类,将其连接到特定的瘦窗口包装器,例如CWindow,提供连接消息处理程序等的简单方法。m_hWndClient 是甚至不是CWindowImpl 的成员,属于WTL 框架窗口相关类。

【讨论】:

以上是关于WTL CWindowImpl 是不是与 CWnd 兼容?的主要内容,如果未能解决你的问题,请参考以下文章