zoukankan      html  css  js  c++  java
  • 孙鑫vc++学习(vs2008)笔记之第四课MFC消息映射、画图

    1.view类始终在框架类窗口之上

    2.删除类成员函数:在属性窗口消息里面找到相应的消息相应函数下拉菜单删除。

    3.增加一个消息响应函数的时候,在三个地方修改代码:①头文件中增加消息相应函数声明;②源文件中BEGIN_MESSAGE_MAP和END_MESSAGE_MAP(消息映射表)之间加入相应函数宏,通过这个宏把消息和消息响应函数联系起来;③消息响应代码。

    4.处理机制:消息映射。

    5.WindowProc在wincore.cpp中,其中调用OnWndMsg完成消息映射的处理

    6.从CWnd所派生出来的类当中都有一个数据成员保存了跟这个类相关的句柄,m_hWnd

    7.CDC类,跟作图有关的操作封装在CDC类中

    8.作图区域:client and nonclient areas,客户区和非客户区

    9.静态函数:不属于某个具体的对象,只属于所属的类本身,非静态成员函数属于对象。静态函数在类创建的时候分配空间,非静态函数在定义对象的时候分配空间。内存里面有分配才能调用。静态成员变量必须初始化

    10.用到的一些函数在程序注释里面。。。。

    View Code
     1 void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
    2 {
    3 // TODO: 在此添加消息处理程序代码和/或调用默认值
    4 m_ptOrigin = m_ptOld = point;
    5 m_bDraw = TRUE;
    6
    7
    8 CView::OnLButtonDown(nFlags, point);
    9 }
    10
    11 void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
    12 {
    13 // TODO: 在此添加消息处理程序代码和/或调用默认值
    14 //HDC hdc;
    15 //hdc = ::GetDC(m_hWnd);
    16 ////从CWnd所派生出来的类当中都有一个数据成员保存了跟这个类相关的句柄m_hWnd
    17 //::MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL); //移动到原点
    18 //LineTo(hdc,point.x,point.y); //画线
    19 //::ReleaseDC(m_hWnd,hdc); //释放DC
    20
    21 //CDC类
    22 //CDC *pDC = GetDC(); //CWnd类的成员函数GetDC
    23 //pDC->MoveTo(m_ptOrigin);
    24 //pDC->LineTo(point);
    25 //ReleaseDC(pDC);
    26
    27 //CClientDC类
    28 //CClientDC dc(this);
    29 ////CClientDC dc(GetParent());
    30 //dc.MoveTo(m_ptOrigin);
    31 //dc.LineTo(point);
    32
    33 //CWindowDC dc(this); //CWindowDC可以访问客户区和非客户区
    34 //CWindowDC dc(GetParent());
    35 //CWindowDC dc(GetDesktopWindow()); //获取桌面句柄
    36 //dc.MoveTo(m_ptOrigin);
    37 //dc.LineTo(point);
    38
    39 //CPen pen(PS_DOT,1,RGB(0,255,0)); //定义画笔
    40 //CClientDC dc(this);
    41 //CPen *pOldPen = dc.SelectObject(&pen); //颜色切换
    42 //dc.MoveTo(m_ptOrigin);
    43 //dc.LineTo(point);
    44 //dc.SelectObject(pOldPen);
    45
    46 //画刷,填充矩形区域
    47 //CBrush brush(RGB(255,0,0));
    48 //CBitmap bitmap;
    49 //bitmap.LoadBitmap(IDB_BITMAP1); //位图画刷
    50 //CBrush brush(&bitmap);
    51 //CClientDC dc(this);
    52 ////dc.FillRect(CRect(m_ptOrigin,point),&brush);
    53 //CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); //透明矩形
    54 ////FromHandle是静态成员函数
    55 //CBrush *pOldBrush = dc.SelectObject(pBrush);
    56 //dc.Rectangle(CRect(m_ptOrigin,point)); //画矩形
    57 //dc.SelectObject(pOldBrush);
    58
    59 m_bDraw = FALSE;
    60 CView::OnLButtonUp(nFlags, point);
    61 }
    62
    63 void CDrawView::OnMouseMove(UINT nFlags, CPoint point)
    64 {
    65 // TODO: 在此添加消息处理程序代码和/或调用默认值
    66 CClientDC dc(this);
    67 CPen pen(PS_SOLID,1,RGB(255,0,0));
    68 CPen *pOldPen = dc.SelectObject(&pen);
    69 if (m_bDraw)
    70 {
    71 dc.SetROP2(R2_BLACK); //设置绘画模式
    72 dc.MoveTo(m_ptOrigin);
    73 //dc.LineTo(point); //连续画画
    74 //m_ptOrigin = point; //下一次起点是上一次的终点
    75 dc.LineTo(m_ptOld); //画扇形
    76 //dc.MoveTo(m_ptOrigin);
    77 dc.MoveTo(m_ptOld);
    78 dc.LineTo(point);
    79 m_ptOld = point;
    80
    81 }
    82 dc.SelectObject(pOldPen);
    83 CView::OnMouseMove(nFlags, point);
    84 }

     

  • 相关阅读:
    HDOJ 2102 A计划(bfs)
    HDOJ 1226 超级密码(bfs)
    第一周——Photoshop软件的发展史,并说明其优缺点。
    第一周——Mobile Apps (手机应用)分析
    POJ 3090
    HDU 2824
    UVA 10673
    POJ 1061
    HDU 1358
    POJ 2406
  • 原文地址:https://www.cnblogs.com/quantumplan/p/2348388.html
Copyright © 2011-2022 走看看