请教关于_Module.ExtractCreateWndData()的两个问题!

xhncmec 2004-10-28 08:05:00
LRESULT CALLBACK CWindowImplBaseT< TBase, TWinTraits >::StartWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
CWindowImplBaseT< TBase, TWinTraits >* pThis = (CWindowImplBaseT< TBase, TWinTraits >*)_Module.ExtractCreateWndData();
ATLASSERT(pThis != NULL);
pThis->m_hWnd = hWnd;
pThis->m_thunk.Init(pThis->GetWindowProc(), pThis);
...

我有两个问题:

一、pThis是不是派生类对象this指针?若是,为什么要把它转换成
CWindowImplBaseT< TBase, TWinTraits >* ?

二、_Module.ExtractCreateWndData() 能够获取派生类对象的this指针,那就没必要再通过thunk机制把 hWnd 转换成this指针了,直接在窗口函数wndproc中用通过_Module.ExtractCreateWndData()获取this就行了,是不是?
...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhncmec 2004-10-29
  • 打赏
  • 举报
回复
To:weirdy(远古传说)

关于第一个问题,我查了一下ATLWIN.H源码:
m_thunk 是 CWindowImplRoot 数据成员,并不是CWindowImplBaseT< TBase, TWinTraits >。
xenke 2004-10-29
  • 打赏
  • 举报
回复
二.不是,设计到效率的问题,通过THUNK,除了第一次消息处理外(这时窗口过程被替换了),其他的消息是直接得到this的(HWND
.
xenke 2004-10-29
  • 打赏
  • 举报
回复
其实是个设计的问题,就是基类和派生类负责那些功能的问题.
xenke 2004-10-29
  • 打赏
  • 举报
回复
一.是.因为m_thunk是CWindowImplBaseT< TBase, TWinTraits >的数据成员(虽然也是派生类的).
xhncmec 2004-10-28
  • 打赏
  • 举报
回复
在第一个问题中,我把CWindowImplBaseT< TBase, TWinTraits >*替换成 CWindowImpl* 运行结果正常,当然,这两种强制转换得到this一样,可是为什么偏偏要用
CWindowImplBaseT< TBase, TWinTraits >* 来转换?
Transformer发轫于NLP(自然语言处理),并跨界应用到CV(计算机视觉)领域。 Swin Transformer是基于Transformer的计算机视觉骨干网,在图像分类、目标检测、实例分割、语义分割等多项下游CV应用中取得了SOTA的性能。该项工作也获得了ICCV 2021顶会最佳论文奖。 本课程将手把手地教大家使用labelImg标注和使用Swin Transformer训练自己的数据集。  本课程将介绍Transformer及在CV领域的应用、Swin Transformer的原理。 课程以多目标检测(足球和梅西同时检测)为例进行Swin Transformer实战演示。 课程在Windows和Ubuntu系统上分别做项目演示。包括:安装软件环境、安装Pytorch、安装Swin-Transformer-Object-Detection、标注自己的数据集、准备自己的数据集(自动划分训练集和验证集)、数据集格式转换(Python脚本完成)、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计、日志分析。  相关课程: 《Transformer原理与代码精讲(PyTorch)》https://edu.csdn.net/course/detail/36697《Transformer原理与代码精讲(TensorFlow)》https://edu.csdn.net/course/detail/36699《ViT(Vision Transformer)原理与代码精讲》https://edu.csdn.net/course/detail/36719《DETR原理与代码精讲》https://edu.csdn.net/course/detail/36768《Swin Transformer实战目标检测:训练自己的数据集》https://edu.csdn.net/course/detail/36585《Swin Transformer实战实例分割:训练自己的数据集》https://edu.csdn.net/course/detail/36586《Swin Transformer原理与代码精讲》 https://download.csdn.net/course/detail/37045

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧