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

 

 

 

   

 

 

posted on 2013-01-14 15:46  会飞的桔子  阅读(217)  评论(0编辑  收藏  举报

导航