CClientDC dc(this); 里头的 this 是什么意思啊?

voidCMyView::OnLBottonDown(UNITnFlags,CPointpoint){CRectrect;CClientDCdc(this);dc.Get... void CMyView::OnLBottonDown(UNIT nFlags, CPoint point){ CRect rect; CClientDC dc(this); dc.GetClipBox(rect);} 展开
 我来答
slatop
推荐于2018-03-12 · 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以便得到所要操作的是哪个窗口.
如果你还不明白,那就不要追问了
一只宅豆
高粉答主

2018-04-12 · 每个回答都超有意思的
知道大有可为答主
回答量: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以便得到所要操作的是哪个窗口.

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
46551489
2013-01-06 · TA获得超过261个赞
知道小有建树答主
回答量:79
采纳率:0%
帮助的人:119万
展开全部
this代表本类对象的指针,在你贴出的代码中,是CMyView对象的指针。
CClientDC dc(this) 代表创建一个与this指针关联的对象的设备上下文对象,即与CMyView关联的设备上下文对象。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a411767760
2013-01-07
知道答主
回答量:9
采纳率:0%
帮助的人:3.7万
展开全部
指向该窗口对象的指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
森林之黄
高粉答主

2018-03-11 · 繁杂信息太多,你要学会辨别
知道大有可为答主
回答量:1.3万
采纳率:94%
帮助的人:1006万
展开全部
你这代码的意思是,当鼠标左键按下的时候,获取当前窗口的无效区域.
从以上字面理解.既然是要获取一个窗口的无效区域,首先你得有一个窗口是不?哪个窗口呢,就是你这个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以便得到所要操作的是哪个窗口.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式