CClientDC dc(this)里面的“this”是什么意思?

 我来答
一只宅豆
高粉答主

推荐于2019-08-26 · 每个回答都超有意思的
知道大有可为答主
回答量:124
采纳率:85%
帮助的人:4.8万
展开全部

从以上字面理解.既然是要获取一个窗口的无效区域,首先你得有一个窗口是不?哪个窗口呢,就是你这个CmyView类的窗口.这个类派生自Cwnd类,所以他是一个窗口类.既然我们已经知道了是哪个窗口,总得要通知程序(这里其实是设备上下文对象)我要获取的就是这个窗口的无效区域.在WINDOWS中代表一个窗口的东西就是句柄 Hwnd这个东西.每一个这个东西指向一个窗口,当窗口产生的时候,也就是使用Create创建窗口的时候会返回一个Hwnd.

这个Hwnd就代表了这个窗口,就跟一个指针差不多.在C++中句柄被类封装,换句话说,每一个派生自CWnd的窗口类都拥有一个自己的m_HWnd成员,这个成员保存了该类定义出来的对象所代表的窗口的句柄,再简单一点说,找到这个类成员,也就是找到了这个句柄,找到了这个句柄,也就是找到了这个窗口.而this是一个指向类自身的指针.如果你C++代码学过,那么你应该明白,有了一个指向对象的指针,那么自然也就找到了这个对象.

CClientDC dc(this);建立设备上下文对象,dc.GetClipBox(rect)用于获取一个窗口的无效区域.哪个窗口?this指向的对象所代表的窗口.每一个对象保存一个m_Hwnd成员,指向这个对象创建出来的窗口.当你调用dc(this)的时候,类内部会自动将这个m_hwnd成员交给设备上下文.所以这里的this其实就是传递自身,为了获取自身对象内的m_hwnd以便得到所要操作的是哪个窗口.

slatop
2018-01-28 · TA获得超过1390个赞
知道小有建树答主
回答量:381
采纳率:100%
帮助的人:429万
展开全部
你这代码的意思是,当鼠标左键按下的时候,获取当前窗口的无效区域.
从以上字面理解.既然是要获取一个窗口的无效区域,首先你得有一个窗口是不?哪个窗口呢,就是你这个CmyView类的窗口.这个类派生自Cwnd类,所以他是一个窗口类.既然我们已经知道了是哪个窗口,总得要通知程序(这里其实是设备上下文对象)我要获取的就是这个窗口的无效区域.在WINDOWS中代表一个窗口的东西就是句柄 Hwnd这个东西.每一个这个东西指向一个窗口,当窗口产生的时候,也就是使用Create创建窗口的时候会返回一个Hwnd.这个Hwnd就代表了这个窗口,就跟一个指针差不多.在C++中句柄被类封装,换句话说,每一个派生自CWnd的窗口类都拥有一个自己的m_HWnd成员,这个成员保存了该类定义出来的对象所代表的窗口的句柄,再简单一点说,找到这个类成员,也就是找到了这个句柄,找到了这个句柄,也就是找到了这个窗口.而this是一个指向类自身的指针.如果你C++代码学过,那么你应该明白,有了一个指向对象的指针,那么自然也就找到了这个对象.
CClientDC dc(this);建立设备上下文对象,dc.GetClipBox(rect)用于获取一个窗口的无效区域.哪个窗口?this指向的对象所代表的窗口.每一个对象保存一个m_Hwnd成员,指向这个对象创建出来的窗口.当你调用dc(this)的时候,类内部会自动将这个m_hwnd成员交给设备上下文.所以这里的this其实就是传递自身,为了获取自身对象内的m_hwnd以便得到所要操作的是哪个窗口.
如果你还不明白,那就不要追问了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式