VC6.0技术内幕读后感(新手不断更新)
第一章,第二章 了解东西居多,没什么价值,略过。
第三章
设备上下文:实际上第一章就已经介绍了,但是这一章才开始应用。由于Windows不允许直接访问显示硬件,但是可以通过一个与窗口联名的“设备上下文”的抽象层进行通信。在MFC中“设备 上下文”是类CDC的一个设备对象,它作为参数(指针形式)传送到OnDraw()。
如:CDC *pDc;
pDc->TextOut(0,0,"hello,world");//在窗口(0,0)显示“hello,world”
第四章 基本事件处理,映射模式和滚动视图
有两种方法优化Windows绘图。首先,必须清楚需要刷新的地方,因此,需要刷新的地方越少,刷新越快。其次,在不需要刷新的地方刷新时浪费时间,例如:OnDraw函数可以调用CDC成 员函数中的GetClipBox来确定无效矩形,然后他可以避免在无效矩形外面重绘对象。记住,OnDraw函数不仅作为对InValidateRect调用的响应时调用,而且当用户改变窗口大小或者显示窗口 时,也会调用它。
CRect 左上右底
CPoint x,y
CSize cx,cy
CRect类有个成员函数PtInRect,他测试一个点是否落在矩形内部,如
CRect rect(5,5,100,100);
CPoint point(35,50);
ASSERT(rect.PtInRect(point));//point 在rect内部
在MM_HIMETRIC(以0.01mm方式来设定坐标值)映射方式中,y轴以在MM_TEXT(指按像素方式来设定坐标值)方式相反的方向移动,当向下移动窗口时,y值减少,因此,4 x 4厘米方框在逻辑坐标中以如下方法绘制:
pDC->Rectangle(CRect(0,0,4000,-4000));
MM_HIMETRIC和MM_TEXT的用法:
pDC->SetMapMode(MM_TEXT)或者pDC->SetMapMode(MM_HIMETRIC);
你也可以改变坐标原点,SetWindowOrg和SetViewportOrg,至于这两个函数用法和比较,下面这文章有很详细的介绍:
http://www.blogjava.net/jasmine214--love/archive/2010/08/30/330296.html