VC++孙鑫视频笔记(四)

本文详细介绍了MFC框架下视图类CDrawView如何响应消息及绘图操作。包括消息函数的添加过程,消息映射机制以及绘图所需的设备上下文获取方法。此外还涉及了画笔、画刷的使用技巧以及绘制连续线条的方法。

     单文档上作图

1>对消息的响应

     由于view覆盖在Frame上,所以那些对窗口的操作只能被view捕获。

     通过向导添加的消息函数都为我们做了些什么?

     a.在头文件:两个宏之间 //{{AFX_MSG(CDrawView)   加了一个消息原函数的声明;

                                            ……

                                       //}}AFX_MSG

     b.在源文件中:1. BEGIN_MESSAGE_MAP(CDrawView, CView)通过这两个宏,将消息与消息函数关联起来;
                              //{{AFX_MSG_MAP(CDrawView)
                              ON_WM_LBUTTONDOWN()

                                ……
                              //}}AFX_MSG_MAP
                              // Standard printing commands

                               END_MESSAGE_MAP()

                          2.响应消息的函数的具体实现部分

      MFC对消息的处理方式:消息映射  主要涉及到WindowProc  和  OnWndMsg  两个函数

2>作图

    首先获取DC句柄。这有非常多种方法:

    a. 可以直接使用API函数(HDC hdc ; hdc = ::GetDC(m_hwnd);(m_hwnd是与该类相关的窗口句柄,凡是从CWnd所派生出           来的类中都有一个数据成员保存与该C++类相关的窗口句柄));

    b.MFC中提供的CDC类,需要自己显示调用GetDC和ReleaseDC

    c.继承CDC的CClientDC和CWindowDC两个类,这些类都可以直接查阅msdn

   其次是画笔,画刷的使用。把一个画笔选到设备描述附表使用SelectObject类,记得要把就旧的画刷选回设备描述符表……

   特别介绍了位图画刷(CBitmap)与透明画刷(GetStockObject)

   最后介绍的是如何画连续的线,通过每一小段画一条线最后可以连成一条曲线,SetROP2()可以设置像素模式。

3>内存访问模型,只有在内存中存在一席之地,才可以被访问。静态成员变量需要在类的外部初始化

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值