第四章、简单绘图

来源:互联网 发布:数据定义语言包括 编辑:程序博客网 时间:2024/05/09 15:03

【1】消息映射机制

(1)消息响应函数原型声明

       声明规则:此声明位于头文件DECLARE_MESSAGE_MAP()宏之上的注释宏AFX_MSG之间,并且函数声明前加afx_msg限定符

(2)消息响应宏

      规则:位于源文件BEGING_MESSAGE_MAP和END_MESSAGE_MAP()之间定义消息响应表和命令响应表

(3)消息响应函数定义

     规则:位于源文件中实现消息响应函数定义。

MFC消息映射机制具体的实现方法:在每个可以处理消息的类中定义一个消息和消息函数的静态对照表,即消息映射表。在消息映射表中,消息和消息处理函数指针式成对出现的。类能够处理的所有消息和消息处理函数指针都在这个消息映射表中。当有消息需要处理的时候,就在这个映射表中查找消息并且找出对应的消息处理函数,进行处理。

 

【2】绘制线条

(1)利用SDK全局函数绘制线条

(2)利用MFC的CDC类实现画图

(3)利用MFC的CCLientDC类实现画线

(4)利用MFC的CWindowDC类

四者在实质性上没有区别,不过CCLientDC类和CWindowDC类会在创建对象的时候自动获取DC在析构的时候releaseDC所以我们不需要显示的调用GetDC和ReleaseDC

(5)在构造DC时候我们可以利用GetParent函数和GetDestTopWindow分别获取父窗口和桌面窗口的DC。

 

【3】GDI对象

常用的几种:

   (1)画笔工具CPen

   (2)画刷工具CBrush

   (3)位图CBitmap

   (4)字体CFont

   (5)矩形Crect

   (6)圆CRectang

在使用这些对象的一般步骤:

   (1)获取DC

    (2)构造GDI对象

    (3)对象选入DC

    (4)操作

    (5)选入原始GDI对象,恢复默认对象

    (6)释放DC

Example code

 

“使用库存对象

     可以利用FromHandle静态函数和GetStockObject获取库存对象

      CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH))

      这里值得注意的一点就是GetStockObject返回对象类型是HGDIOBJECT

 

原创粉丝点击