CClientDC dc(this)里面的“this”是什么意思?
从以上字面理解.既然是要获取一个窗口的无效区域,首先你得有一个窗口是不?哪个窗口呢,就是你这个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以便得到所要操作的是哪个窗口.
从以上字面理解.既然是要获取一个窗口的无效区域,首先你得有一个窗口是不?哪个窗口呢,就是你这个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以便得到所要操作的是哪个窗口.
如果你还不明白,那就不要追问了