孙鑫VC学习笔记:第四讲 MFC消息映射机制和CDC类的使用

CDC使用指南,CDC使用指南 CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南CDC使用指南 立即下载

1.在文档-视图结构中,View类总是覆盖在CMainFrm框架窗口之上的.所以框架窗口无法对
  WM_LBUTTONDOWN消息做出响应.

2.在添加WM_LBUTONDOWN后,查看我们的工程的源程序变化
  <1>查看 DrawView.h
-----------------------------------------------------------------------------------
 protected:
 //{{AFX_MSG(CDrawView)    //注释宏
 afx_msg void OnLButtonDown(UINT nFlags, CPoint point); //消息响应函数原型的声明.
 //}}AFX_MSG
-----------------------------------------------------------------------------------
 afx_msg 也是一个宏,指明后面的函数是消息响应函数
  <2>查看 DrawView.cpp
-----------------------------------------------------------------------------------
    BEGIN_MESSAGE_MAP(CDrawView, CView)
 //{{AFX_MSG_MAP(CDrawView)
 ON_WM_LBUTTONDOWN()  //通过这个宏,把消息和我们的消息响应函数
                      //CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
       //关联起来
 //}}AFX_MSG_MAP
 // Standard printing commands
 ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
 ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
 ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
    END_MESSAGE_MAP()
-----------------------------------------------------------------------------------

3.MFC的消息映射机制
  查看MFC的源代码:WINCORE.CPP
  ---------------------------------------------------------------------------------
  LRESULT CWnd::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
  {
 // OnWndMsg does most of the work, except for DefWindowProc call
 LRESULT lResult = 0;
 if (!OnWndMsg(message, wParam, lParam, &lResult))//真正的消息处理都是由OnWndMsg
                                                  //函数进行处理的
  lResult = DefWindowProc(message, wParam, lParam);
 return lResult;
  }
  ---------------------------------------------------------------------------------
  
  查看AFX_WIN.h
  ---------------------------------------------------------------------------------
  virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
  --------------------------------------------------------------------------------
  //WindowProc(UINT message, WPARAM wParam, LPARAM lParam);是一个虚函数

  /*在MFC中维护了一张消息到窗口的对应表,当接收到一个消息后,通过消息的句柄,找到与其相
  关  联的窗口对象的指针,然后传给CWnd::WindowProc函数,CWnd::WindowProc函数函数交由
  CWnd::OnWndMsg函数进行处理,判断子类是否有这个消息的响应函数,通过查看这个类的头文件
  看有没有消息响应函数原型的声明,查看源文件,看有没有消息响应函数的定义.如果子类有,那
  么交由子类处理消息,如果子类没有,消息交由父类进行处理.*/

4.实现我们的画线函数
  ---------------------------------------------------------------------------------
   void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) 
   {
  // TODO: Add your message handler code here and/or call default
  //MessageBox("View Clicled!");
  m_ptOrigin=point;
  CView::OnLButtonDown(nFlags, point);
   }

 void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
 {
  // TODO: Add your message handler code here and/or call default
  HDC hdc;
  hdc=::GetDC(m_hWnd); //每个从CWnd类派生出来的类都有一个内部的数据成员m_hWnd
  MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
  LineTo(hdc,point.x,point.y);
  ::ReleaseDC(m_hWnd,hdc); 
  CView::OnLButtonUp(nFlags, point);
 }

  ---------------------------------------------------------------------------------

  MSDN
  ----------------------------------------------------------------------------------
  BOOL MoveToEx(
 HDC hdc,          // handle to device context
 int X,            // x-coordinate of new current position
 int Y,            // y-coordinate of new current position
 LPPOINT lpPoint   // old current position
  );
  BOOL LineTo(
 HDC hdc,    // device context handle
 int nXEnd,  // x-coordinate of ending point
 int nYEnd   // y-coordinate of ending point
  );
  ----------------------------------------------------------------------------------

5.CDC类
  MFC把所有和窗口相关的操作都封装在CWnd类中.同样,MFC把所有和绘图相关的操作也封装在
  CDC类中.
  class CDC :public CObject
  {
   .........................
  };
  使用CDC类完成画线的功能.
  MSDN
  ----------------------------------------------------------------------------------
  CWnd::GetDC 
     Retrieves a pointer to a common, class, or private device context for the client
  area depending on the class style specified for the CWnd.

  CDC* GetDC();
  ----------------------------------------------------------------------------------
  DrawView.CPP
  ---------------------------------------------------------------------------------
  void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
  {
 // TODO: Add your message handler code here and/or call default
 CDC *pDC=GetDC();
 pDC->MoveTo(m_ptOrigin);
 pDC->LineTo(point);
 ReleaseDC(pDC);
 CView::OnLButtonUp(nFlags, point);
  }
  ---------------------------------------------------------------------------------
6.使用CClientDC
  CClientDC派生自CDC
  构造CClientDC对象的时候自动调用GetDC,而在析构的时候自动调用ReleaseDC.从而我们不需要
  显示的去调用这两个函数.只需要仅仅构造一个CClientDC对象.
  MSDN
  -----------------------------------------------------------------------------------
  CClientDC::CClientDCSee Also
     Constructs a CClientDC object that accesses the client area of the CWnd pointed 
  to by pWnd.

     explicit CClientDC(
        CWnd* pWnd 
     );
  -----------------------------------------------------------------------------------
  构造的时候需要一个CWnd*
  DrawView.CPP
  -----------------------------------------------------------------------------------
  void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
  {
 // TODO: Add your message handler code here and/or call default
 //CClientDC dc(this);
    CClientDC dc(GetParent());//获得父窗口(框架窗口的句柄)
 dc.MoveTo(m_ptOrigin);
 dc.LineTo(point);
  }

7.CWindowDC
  class CWindowDC : public CDC
  构造CWindowDC对象时,自动调用GetWindowDC,析构时自动调用ReleaseDC.
  有了CWindowDC对象我们可以访问整个屏幕区域,包括客户区域和非客户区域.
  MSDN
  ----------------------------------------------------------------------------------
  CWindowDC::CWindowDC
     Constructs a CWindowDC object that accesses the entire screen area 
  (both client and nonclient) of the CWnd object pointed to by pWnd.
 
     explicit CWindowDC(
        CWnd* pWnd 
     );
  -----------------------------------------------------------------------------------
  DrawView.CPP
  -----------------------------------------------------------------------------------
   void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
   {
 // TODO: Add your message handler code here and/or call default
 //CWindowDC dc(this);
    CWindowDC dc(GetParent());//获得父窗口(框架窗口的句柄)
 dc.MoveTo(m_ptOrigin);
 dc.LineTo(point);
   }
  -----------------------------------------------------------------------------------

8.CWnd::GetDesktopWindow 函数
MSDN
-------------------------------------------------------------------------------------
CWnd::GetDesktopWindow
   Returns the Windows desktop window.

   static CWnd* PASCAL GetDesktopWindow( );
-------------------------------------------------------------------------------------
DrawView.CPP
  -----------------------------------------------------------------------------------
   void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
   {
 // TODO: Add your message handler code here and/or call default
 //CWindowDC dc(this);
    CWindowDC dc(GetDesktopWindow());//获得桌面窗口句柄
 dc.MoveTo(m_ptOrigin);
 dc.LineTo(point);
   }
  -----------------------------------------------------------------------------------

9.画出其他颜色的线条

  CPen类
  封装了和画笔相关的操作.
  CPen的构造函数
  MSDN
  -----------------------------------------------------------------------------------
  Constructs a CPen object.

 CPen( );
 CPen(
    int nPenStyle,       //笔的风格 PS_SOLID   Creates a solid pen. 
                            //PS_DASH   Creates a dashed pen. Valid only when the 
       //pen width is 1 or less, in device units. 
                            //PS_DOT   Creates a dotted pen.........
    int nWidth,          //线条的宽度
    COLORREF crColor     //笔的颜色
 );
 CPen(
    int nPenStyle,
    int nWidth,
    const LOGBRUSH* pLogBrush,
    int nStyleCount = 0,
    const DWORD* lpStyle = NULL 
 );
  -----------------------------------------------------------------------------------
  RGB宏
  MSDN
  -----------------------------------------------------------------------------------
  COLORREF RGB(
   BYTE byRed,    // red component of color
   BYTE byGreen,  // green component of color
   BYTE byBlue    // blue component of color
 );               //RGB(0,0,0)Black,RGB(255,255,255)White
  -----------------------------------------------------------------------------------
CDC::SelectObject
MSDN
-------------------------------------------------------------------------------------
  CDC::SelectObject 
 Selects an object into the device context.

 CPen* SelectObject(
    CPen* pPen 
 );
 CBrush* SelectObject(
    CBrush* pBrush 
 );
 virtual CFont* SelectObject(
    CFont* pFont 
 );
 CBitmap* SelectObject(
    CBitmap* pBitmap 
 );
 int SelectObject(
    CRgn* pRgn 
 );
 CGdiObject* SelectObject(
    CGdiObject* pObject
 );
------------------------------------------------------------------------------------

DrawView.CPP
  -----------------------------------------------------------------------------------
   void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
   {
 // TODO: Add your message handler code here and/or call default
 
  CPen pen(PS_SOLID,1,RGB(255,0,0)); //创建画笔
  CClientDC dc(this);
  CPen *pOldPen=dc.SelectObject(&pen);//把创建的画笔选进设备描述表
  dc.MoveTo(m_ptOrigin);
  dc.LineTo(point);
  dc.SelectObject(pOldPen); //还原设备描述表
  CView::OnLButtonUp(nFlags, point);
   }
  -----------------------------------------------------------------------------------
10.创建画刷
 CBrush类
 MSDN
 ---------------------------------------------------------------------------------
 CBrush::CBrush
 Constructs a CBrush object.

 CBrush( );
 CBrush(
    COLORREF crColor 
 );
 CBrush(
    int nIndex,
    COLORREF crColor 
 );
 explicit CBrush(
    CBitmap* pBitmap 
 );
 ---------------------------------------------------------------------------------

 DrawView.CPP
  -----------------------------------------------------------------------------------
   void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
   {
 // TODO: Add your message handler code here and/or call default
 
  CBrush brush(RGB(255,0,0)); //创建画刷
  CClientDC dc(this);
  dc.FillRect(CRect(m_ptOrigin,point),&brush);//用制定的画刷,填充矩形区域

  CView::OnLButtonUp(nFlags, point);
   }
  -----------------------------------------------------------------------------------
  
  创建位图的画刷:
  CBitmap类
  MSDN
  -----------------------------------------------------------------------------------
  CBitmap::CBitmap 
 Constructs a CBitmap object.

 CBitmap( );  // 需要使用函数对其进行初始化
  Remarks
 The resulting object must be initialized with one of the initialization member
 functions.
-------------------------------------------------------------------------------------
LoadBitmap函数,加载位图
MSDN
-------------------------------------------------------------------------------------
CBitmap::LoadBitmap
 Loads the bitmap resource named by lpszResourceName or identified by the ID number
 in nIDResource from the application's executable file.

 BOOL LoadBitmap(
    LPCTSTR lpszResourceName 
 );
 BOOL LoadBitmap(
    UINT nIDResource 
 );
-------------------------------------------------------------------------------------
DrawView.CPP
  -----------------------------------------------------------------------------------
   void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
   {
 // TODO: Add your message handler code here and/or call default
 
  CBitmap bitmap;
  bitmap.LoadBitmap(IDB_BITMAP1); //加载位图
  CBrush brush(&bitmap);
  CClientDC dc(this);
  dc.FillRect(CRect(m_ptOrigin,point),&brush);//用制定的画刷,填充矩形区域

  CView::OnLButtonUp(nFlags, point);
   }
  -----------------------------------------------------------------------------------
  
 透明画刷的创建
 CBrush::FromHandle
 MSDN
-------------------------------------------------------------------------------------
CBrush::FromHandle
 Returns a pointer to a CBrush object when given a handle to a Windows HBRUSH object.

 static CBrush* PASCAL FromHandle(
    HBRUSH hBrush                        //这是CBrush类的静态方法
    //在静态的成员函数中,是不能引用非静态的数据成员
    //因为非静态的数据成员,是在类实例化一个对象时才分配内存空间的.
    //静态的数据成员使用之前必须初始化
 );
-------------------------------------------------------------------------------------
 由CBrush::FromHandle可以从一个画刷的句柄,得到指向这个画刷对象的指针.
 DrawView.CPP
  -----------------------------------------------------------------------------------
   void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
   {
 // TODO: Add your message handler code here and/or call default
 
  CClientDC dc(this);
  CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
  CBrush *pOldBrush=dc.SelectObject(pBrush);  
  dc.Rectangle(CRect(m_ptOrigin,point));
  dc.SelectObject(pOldBrush);
  CView::OnLButtonUp(nFlags, point);
   }
  -----------------------------------------------------------------------------------

11.设置绘图模式(CDC::SetROP2)
CDC::SetROP2函数
MSDN
------------------------------------------------------------------------------------
CDC::SetROP2 
Sets the current drawing mode.
int SetROP2(
       int nDrawMode 
 );
Parameters
nDrawMode 
 Specifies the new drawing mode. It can be any of the following values: 
 R2_BLACK   Pixel is always black. 
 R2_WHITE   Pixel is always white. 
 R2_NOP   Pixel remains unchanged. 
 R2_NOT   Pixel is the inverse of the screen color. 
 R2_COPYPEN   Pixel is the pen color. 
 R2_NOTCOPYPEN   Pixel is the inverse of the pen color.
 

【文章阅读+代码复现】Point-GNN Brief 在3D点云语义分割方法中,GNN已经做了很多可用的方案,但是在目标检测上依旧是采用比较传统的CNN和稀疏卷积的组合,这一篇文章是研究了图卷积在3D检测的中的用法。来自卡内基梅隆大学。已经被CVPR2020接收. 这里是 paper 这里是 code Abstruct 一个采用GNN设计的3D目标检测框架 过程是先将点云场景编码成图结构,随后设计了一个叫point-GNN的网络结构,在... 阅读详情

相关推荐

大模型备案避坑指南:如何设计符合TC260标准的评估测试题集?

本文深入探讨了如何设计符合TC260标准的大模型评估测试题集,以顺利通过备案。文章从解构标准核心逻辑出发,详细阐述了题集设计的工程化流程、核心原则与常见误区,并提供了模拟真实对抗的高阶测试策略与度量分析方法,旨在帮助企业构建一套能真实反映模型安全水位、有效规避风险的评估体系。

kafka6courier的博客 662

MFC:CDC 类与成员

mfc 设备上下文对象类 CDC

belien 1847

从ISCXTor2016到CICIDS2017:手把手教你下载和使用UNB的网络安全数据集

本文详细介绍了UNB大学发布的ISCXTor2016和CICIDS2017等网络安全数据集的下载与使用方法,特别适合加密流量识别和网络行为分析研究。文章提供了多种高效获取路径、文件结构解析及实战分析示例,帮助研究者快速上手这些真实场景捕获的精细标注数据集。

weixin_42524945的博客 630

CDC类详细说明

CDCCObject └CDCCDC类定义的是设备上下文对象的类。CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。通过CDC对象的成员函数进行所有的绘图。类对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(G

无幻 3万+

图解链表 —— JAVA中的单链表基本操作

文章目录1. 什么是链表2. 链表的种类3. 创建单链表3.1 创建 Node 类(车厢类)3.2 创建 MySingleList (火车类)4. 单链表的基本操作4.1 增加链表元素4.1.1 在链表头部添加元素4.1.2 在链表任意位置添加元素4.1.3 在链表尾部添加元素4.2 删除链表元素4.2.1 删除第一个节点元素4.2.2 删除任意位置 index 元素4.2.3 删除链表中指定元素的第一个节点4.2.4 删除链表的所有指定元素4.3 查找链表元素4.3.1 判断链表中是否包含元素 data4

AlinaQ05的博客 2501

AI辅助专利撰写实战:用Codex 30分钟生成发明专利初稿

这次我们来看一个用 Codex 从零开始撰写发明专利的实战项目。对于技术研发人员、产品经理或初创团队来说,专利申请是保护创新成果、构建技术壁垒的关键一步。然而,撰写一份高质量的专利申请书,尤其是权利要求书和说明书,往往需要专业的法律和技术语言,耗时耗力。这个项目演示了如何利用 AI 工具 Codex,在短时间内生成一份结构完整、逻辑清晰、具备授权潜力的专利申请文件初稿。 整个过程的核心不是让 AI 完全替代专利代理人,而是将其作为强大的“技术翻译”和“内容生成”助手。它能将你的技术构思、流程图、核心算法或产

weixin_32181267的博客 414

Lesson4 MFC消息映射机制和CDC类的使用 ---孙鑫VC++教程

Lesson4 MFC消息映射机制和CDC类的使用state:finished1.在文档-视图结构中,View类总是覆盖在CMainFrm框架窗口之上的.所以框架窗口无法对  WM_LBUTTONDOWN消息做出响应.2.在添加WM_LBUTONDOWN后,查看我们的工程的源程序变化  查看 DrawView.h-------------------------------------

lxu的专栏 2371

告别信号毛刺!手把手教你用ADS和IBIS-AMI模型搞定PCIe Gen3眼图仿真

本文详细介绍了如何使用Keysight ADS和IBIS-AMI模型进行PCIe Gen3眼图仿真,解决高速信号传输中的信号质量问题。从仿真环境搭建、S参数预处理到眼图优化与故障排除,提供了一套完整的工程实践指南,帮助工程师提升PCIe Gen3接口的信号完整性。

weixin_28366053的博客 366

MFC编程之三: 绘图-1(画图)

绘图一般在视图类的(屏幕/打印机)绘图消息响应函数OnDraw中进行,例如:void CTestView::OnDraw(CDC* /*pDC*/) {       CTestDoc* pDoc = GetDocument();       ASSERT_VALID(pDoc);       if (!pDoc)              return;       //

fish_1001的专栏 6596

手持式激光测距仪全套方案

激光测距全套方案,包括原理图、源代码、PCB、BOM、光学部分资料,结构、特殊元件数据手册及供应商联系方式,提供调试技术文档。全套方案已成功打板验证,实现0.05~50m测量范围,精度在+/—1.5mm,激光波长635~650nm,功率《1mW。方案预留了TTL串口、RS485接口,可通过串口助手看到测量数据,可自行DIY或者商业开发。无论是电路小白,还是技术大拿,都能通过方案资料成功做出一套激光测距仪。

Laser01的博客 2055

[27] cuda 应用之 核函数实现图像通道变换

[27] cuda 应用之 核函数实现图像通道变换

yohnyang的博客 201

MFC中的CDC 绘图(1)

绘图一般在视图类的(屏幕/打印机)绘图消息响应函数OnDraw中进行,例如:void CTestView::OnDraw(CDC* /*pDC*/) { CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; /...

weixin_34245082的博客 687

HBV模型

据说mHM模型也是基于HBV模型原理。 网上不同版本的HBV模型稍有差别 def hbv_main(n_days, params, air_temp, prec, dpem): #n_days 模拟天数 #air_temp 每月温度 #prec 降水 #dpem 每月蒸发 Tsnow_thresh = 0.0 ca = 410. # Initialize arrays for the simiulation snow = np.zeros(air_temp.size

m0_46268055的博客 2326

孙鑫VC学习笔记:第四讲 MFC消息映射机制和CDC类的使用 收藏

 1.在文档-视图结构中,View类总是覆盖在CMainFrm框架窗口之上的.所以框架窗口无法对  WM_LBUTTONDOWN消息做出响应.2.在添加WM_LBUTONDOWN后,查看我们的工程的源程序变化  查看 DrawView.h-------------------------------------------------------------------------------

vooohooodooo的专栏 507

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

孙鑫vc++ 第四课 笔记 MFC消息映射机制及CDC的使用

MFC消息映射机制的剖析,掌握设备描述表及其封装类CDC的使用同样笔记也是没有整理过的,如果有错误,请你告诉我,谢谢^_^1、mfc在后台维护了一个句柄,以及程序各个类的句柄映射表,当我门在某个窗口上操作产生消息,该消息携带一个该窗口的句柄,通过该句柄找到该对象的指针,由窗口类传至父类,再由父类通过消息循环调用一个CWnd::WindowProc()WindowProc()是一个虚函数,每

happyhhb的专栏 2653

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

孙鑫VC学习系列教程

教程简介 1、循序渐进  从Win32SDK编程开始讲解,帮助大家理解掌握Windows编程的核心 —— 消息循环机制。 2、通俗易懂  编程语言枯燥难懂,然而通过孙鑫老师形象化的讲解,Windows和MFC编程中的难点、重点,让你轻松掌握。 3、实战性强  编程中要注意什么?如何阅读出错提示?如何调试运行程序?如何排查错误,解决问题?通过孙鑫老师的一步步操作讲解,带你迅速掌握程序

学如逆水行舟,不进则退 1821

孙鑫VC视频教程笔记之第四课“MFC消息映射机制和CDC类”

1.      对应用程序(单文档程序)的窗口进行操作的时候,如点击鼠标,拖动鼠标等,所有的窗口消息应该在CView中捕获,而不能在MainFrame进行捕获,因为在文档-视图结构中,CView类总是覆盖在CMainFrm框架窗口之上的。 2.      MFC的消息映射机制:查看MFC的源代码:WINCORE.CPP--------------------------------

Roger Ge 的专栏 2036

孙鑫C++视频教程

(注意以下为FTP下载地址,建议使用迅雷等下载工具下载,全20CD,已添加完整) 孙鑫C++教程(全20讲)PPT讲义.rar 孙鑫C++教程01.rar 孙鑫C++教程02.rar 孙鑫C++教程03.rar 孙鑫C++教程04.rar 孙鑫C++教程05.rar 孙鑫C++教程06.rar 孙鑫C++教程07.rar 孙鑫C++教程08.rar 孙鑫C++教程0

又见炊烟 6280

孙鑫VC++讲座笔记-(4)MFC消息映射机制的剖析

一,消息映射机制1,消息响应函数:(例:在CDrawView类响应鼠标左键按下消息) 1)在头文件(DrawView.h)中声明消息响应函数原型。//{{AFX_MSG(CDrawView)   //注释宏afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//}}AFX_MSG   //注释宏说明:在注释宏之间的声明在VC中灰色显示。afx

hbyufan的专栏 7140

孙鑫VC++Lession4

本节课,孙老师讲解了用VC的写的一个画图的编程案例工程名称:Draw (MFC)通过这个案例,我的感觉就是,不仅仅知道了几个画图的函数,和一些画图的方法,更重要的是,这堂课,向我们展示了MFC如何处理消息映射。因为View 是覆盖在了MainFrame上,所以,我们在捕获鼠标左键的消息的时候,都是捕获到了view上的消息,而不是MainFrame上消息响应。所以,我们在要分清楚我们呢

路径的专栏 576

MFC绘图 (孙鑫老师 第四讲 MFC消息映射机制和CDC类的使用 参考文章)

【聚杰网VC】VC中利用MFC设计绘图程序初步  首先我们说下通过鼠标的移动来绘制直线。   这里要捕获到鼠标的两个消息:WM_LBUTTONDOWN, WM_LBUTTONUP。响应WM_LBUTTONDOWN消息记录直线的起始点,响应WM_LBUTTONUP消息记录直线的终点并绘制直线。   好了,我们看看怎么响应。 void CDrawView::OnLButtonDown(UIN

dlfer11的专栏 901

孙鑫C++教程(全20讲)

(注意以下为FTP下载地址,建议使用迅雷等下载工具下载,全20CD,已添加完整)孙鑫C++教程(全20讲)PPT讲义.rar孙鑫C++教程01.rar孙鑫C++教程02.rar孙鑫C++教程03.rar孙鑫C++教程04.rar孙鑫C++教程05.rar孙鑫C++教程06.rar

http://www.softwareace.cn 王牌软件 2510
上一篇: 孙鑫VC学习笔记:第三讲 MFC应用程序框架
下一篇: 孙鑫VC学习笔记:第五讲 文本编程
Savitch
博客等级 码龄16年 84粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值