《Windows绘图程序设计.ppt》由会员分享,可在线阅读,更多相关《Windows绘图程序设计.ppt(111页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Windows程序设计教程程序设计教程第第5章章Windows绘图程序程序设计 在在编写写Windows应用程序用程序过程中,加程中,加载位位图或者或者创建位建位图是程序是程序员常用的方法。常用的方法。只有熟只有熟练地掌握地掌握对于位于位图的有关操作方的有关操作方法,才能法,才能编写出写出标准且美准且美观的的应用程序。用程序。本章主要介本章主要介绍Windows绘图程序有关程序有关的知的知识,并,并对绘图所需要的所需要的类进行充分行充分讲解。解。通通过本章的学本章的学习,读者可以掌握各种者可以掌握各种图形的形的绘制及制及图像在窗口中的一些操作。像在窗口中的一些操作。图形设备接口图形设备接口5.
2、1设备上下文设备上下文5.2 GDI对象对象5.3绘图函数绘图函数5.4画笔与画刷画笔与画刷5.55.1图形设备接口图形设备接口在在MS-DOS程序中,通常采用直接向程序中,通常采用直接向视频存存储区或打印机端口区或打印机端口输送数据的方式。送数据的方式。但采用但采用这种方式需要各种种方式需要各种显示卡或打示卡或打印机印机驱动程序。程序。为了支持了支持这些些设备,又需要,又需要编写大量写大量不同的代不同的代码来包含来包含这些些驱动程序。程序。为了避免上述了避免上述问题,Windows提供了提供了一个抽象的接口一个抽象的接口图形形设备接口接口(GraphicsDeviceInterface,GD
3、I)。)。5.2设备上下文设备上下文设备上下文(上下文(DeviceContext,DC)。)。设备上下文是一种包含有关某个上下文是一种包含有关某个设备(如(如显示器或打印机)的示器或打印机)的绘制属性信息的制属性信息的Windows数据数据结构。构。下面下面对设备上下文上下文进行行详细介介绍。5.2.1 5.2.1 设备上下文介绍设备上下文介绍在在Windows应用程序用程序设计中,所有中,所有绘制制调用都通用都通过设备上下文上下文对象象进行,行,这些些对象封装了用于象封装了用于绘制制线条、形状和文本的条、形状和文本的WindowsAPI。设备上下文允上下文允许在在Windows中中进行与行
4、与设备无关的无关的绘制。制。设备上下文可用于上下文可用于绘制到屏幕、打印制到屏幕、打印机或者机或者图元文件。元文件。在在Windows应用程序中,每个窗口都用程序中,每个窗口都关关联有有设备上下文。上下文。用用户只要只要获取到窗口的取到窗口的设备上下文,上下文,就可以在窗口中就可以在窗口中绘制各种制各种图形形图像等信息。像等信息。获取窗口取窗口设备上下文的函数是上下文的函数是GetDC(),该函数的原型如下:函数的原型如下:HDC GetDC(HWND hWnd );图图5.1程序程序sample0501的运行结果的运行结果 5.2.2 5.2.2 设备上下文类型设备上下文类型1显示设备上下文
5、显示设备上下文2打印机设备上下文打印机设备上下文3内存设备上下文内存设备上下文4信息设备上下文信息设备上下文5.2.3 5.2.3 设备上下文设备上下文MFCMFC类类在在MFC中,中,为了方便用了方便用户绘图,提供,提供了一个了一个设备上下文上下文类CDC。CDC类封装了封装了绘图所需要的所有成所需要的所有成员函数,以及各种函数,以及各种类型的型的Windows设备上下上下文的全部功能。文的全部功能。此外,此外,CDC还提供了几个派生提供了几个派生类,如,如图5.2所示。所示。1 1CDCCDC类类在在CDC类中存在两个成中存在两个成员变量,量,m_hDC和和m_hAttribDC。这两个成
6、两个成员变量都是量都是Windows设备上上下文句柄。下文句柄。CDC对象使用象使用m_hDC对其所有的成其所有的成员函数作函数作输出出调用,而使用用,而使用m_hAttribDC对其所有的成其所有的成员函数作属性函数作属性调用。用。CDC类的构造函数原型如下:的构造函数原型如下:图图5.2设备上下文设备上下文MFC类类 CDC:CDC()m_hDC=NULL;m_hAttribDC=NULL;m_bPrinting=FALSE;CDC:CDC()if(m_hDC!=NULL):DeleteDC(Detach();2 2CPaintDCCPaintDC类类在在Windows应用程序中,通常在用
7、程序中,通常在绘制制图像之前像之前调用函数用函数BeginPaint(),然后在,然后在设备上下文中上下文中进行一系列的行一系列的绘制操作,最后制操作,最后调用用EndPaint函数函数结束束绘制。制。在在MFC中,中,CPaintDC类完全封装了完全封装了这一一过程,其机制是程,其机制是这样的:在构造的:在构造CPaintDC对象的同象的同时,其构造函数自,其构造函数自动调用用BeginPaint()函数;在函数;在销毁CPaintDC对象的同象的同时,其析构函数自,其析构函数自动调用用EndPaint()函数。函数。因此整个因此整个过程可以程可以简化如下:构造化如下:构造CDC对象,象,执
8、行行绘制操作,最制操作,最终销毁CDC对象。象。CPaintDC类是所有是所有CDC类中最常用的中最常用的一个一个类,该类代表了代表了应用程序窗口的客用程序窗口的客户区,其只能运行在区,其只能运行在CView类中的中的OnDraw()函数中。函数中。OnDraw()函数的原型如下:函数的原型如下:void CView:OnDraw(CDC*pDC)CDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);3 3CClientDCCClientDC类类与与CPaintDC类一一样,CClientDC类所所封装的封装的设备上下文上下文仅代表一个窗口的客代表一个窗口的客户
9、区。区。但与但与CPaintDC类不同的是,不同的是,CPaintDC类的的对象只能在象只能在视图类的的OnDraw()函数中使用,而函数中使用,而CClientDC类的的对象可以象可以在除了在除了OnDraw()函数之外的任何地方使用。函数之外的任何地方使用。图图5.3程序程序sample0502的运行结果的运行结果 图图5.4弹出式菜单弹出式菜单 图图5.5添加单击消息添加单击消息 图图5.6程序程序sample0503的运行结果的运行结果4 4CWindowDCCWindowDC类类CWindowDC类所封装的所封装的设备上下文上下文表示的是整个窗口,即不表示的是整个窗口,即不仅包括其客
10、包括其客户区,区,同同时也包括窗口的也包括窗口的边框及框及标题栏等其他非等其他非客客户区区对象。象。其构造函数如下:其构造函数如下:CWindowDC:CWindowDC(CWnd*pWnd)ASSERT(pWnd=NULL|:IsWindow(pWnd-m_hWnd);if(!Attach(:GetWindowDC(m_hWnd=pWnd-GetSafeHwnd()AfxThrowResourceException();5 5CMetaFileDCCMetaFileDC类类在在应用程序中,有用程序中,有时需要重复需要重复显示一示一些些图形。形。如果每次如果每次显示一次就要示一次就要绘制一次,
11、就制一次,就显得太麻得太麻烦了。了。如果把如果把绘制好的制好的图形存形存储在内存中,在内存中,当使用当使用时再再调用出来,就可以直接打开用出来,就可以直接打开图形了,形了,这种种图形文件叫做形文件叫做图元文件。元文件。图图5.7添加消息响应函数添加消息响应函数 图图5.8程序程序sample0504的运行结果的运行结果 5.2.4 5.2.4 设备上下文操作设备上下文操作通常,在通常,在设备上下文中可以完成如下的上下文中可以完成如下的操作:枚操作:枚举现有的有的图形形对象、象、选入新的入新的图形形对象、象、删除除现存的存的图形形对象、保存当前象、保存当前的的图形形对象以及它象以及它们的属性、恢
12、复先前保的属性、恢复先前保存的存的图形形对象以及它象以及它们的属性等。的属性等。这些操作中有些是相些操作中有些是相对的,如的,如选入和入和删除除图形形对象等。象等。下面主要介下面主要介绍一下一下图形形对象的象的选入、入、删除以及除以及设备上下文的保存、恢复等。上下文的保存、恢复等。1 1对象的选入和删除对象的选入和删除一些打印机提供固有的画笔、画刷、字一些打印机提供固有的画笔、画刷、字体等体等对象,它象,它们一般用于改善一般用于改善绘制速度。制速度。如果枚如果枚举固有的画笔、画刷等,固有的画笔、画刷等,则可以可以使用使用EnumObjects()函数函数检查相相应的属性;的属性;如果枚如果枚举
13、固有的字体或者固有的字体或者GDI字体,字体,则可以可以调用用EnumFontFamilies()函数来完成函数来完成这一一任任务。如果如果Windows应用程序用程序发现需要替需要替换默默认的的图形形对象,象,则它将它将调用相用相应的的创建建函数(如函数(如对于画笔用于画笔用CreatePen()等)等)创建建一个新的一个新的图形形对象,象,这些些创建函数返回建函数返回标识新新对象的句柄。象的句柄。在使用新在使用新对象之前,它必象之前,它必须调用用SelectObject()函数,以便用新的函数,以便用新的图形形对象取代旧的象取代旧的图形形对象。象。然而,然而,Windows应用程序用程序还
14、应当保存当保存标识默默认对象的句柄,因象的句柄,因为当使用新当使用新对象象完成完成绘制任制任务后,它必后,它必须再次再次调用用SelectObject()函数,以便恢复默函数,以便恢复默认的的对象。象。同同时,还必必须调用用DeleteObject()函数,函数,以便以便删除新的除新的对象,从而象,从而释放放资源。源。需要注意的是,如果需要注意的是,如果删除失除失败,将会,将会导致致严重的性能重的性能问题。2 2设备上下文的保存和恢复设备上下文的保存和恢复有有时,用,用户需要改需要改变某些某些设备上下文属上下文属性,然后用改性,然后用改变后的属性后的属性进行行绘图,完,完毕后又恢复原来的后又恢
15、复原来的设备上下文。上下文。要要实现这一一过程,只需要程,只需要简单地地调用用SaveDC()函数即可。函数即可。SaveDC()函数在一个特殊的函数在一个特殊的GDI栈上上记录了当前了当前设备上下文的上下文的图形形对象,以及象,以及它它们的属性等。的属性等。通常,在开始通常,在开始绘制且保存原始状制且保存原始状态之之前前调用用这个函数,个函数,为了返回原始状了返回原始状态,只,只需要需要简单地地调用用RestoreDC()函数。函数。5.3GDI对象对象为了方便用了方便用户在在设备上下文中上下文中绘制信息,制信息,Windows提供了提供了6个个GDI对象象画笔、画画笔、画刷、字体、位刷、字
16、体、位图、调色板和区域。色板和区域。在在MFC中,中,对于于这些些GDI对象分象分别进行行了封装,形成了了封装,形成了6个个对应的的MFC类,如表,如表5.1所示。所示。5.4绘绘图图函函数数在在CDC类中,常用的中,常用的绘图函数大致可函数大致可以分以分为4种:点种:点线函数、形状函数、填充函函数、形状函数、填充函数和位数和位图函数。函数。下面下面对这些些绘图函数分函数分别进行介行介绍。5.4.1 5.4.1 点线函数点线函数点点线函数是指函数是指对点、直点、直线和弧和弧线进行行操作的函数,下面操作的函数,下面对点、直点、直线和弧和弧线的有的有关操作函数关操作函数进行行详细介介绍。1 1点点
17、在在CDC类中,中,调用用SetPixel()函数可以函数可以绘制一个点,制一个点,该函数的原型如下:函数的原型如下:COLORREF SetPixel(int x,int y,COLORREF crColor);COLORREF SetPixel(POINT point,COLORREF crColor);2 2直线直线绘制一条直制一条直线需要两个函数:需要两个函数:MoveTo()函数和函数和LineTo()函数。函数。其中,其中,MoveTo()函数用于确定直函数用于确定直线的的起点,起点,该函数的原型如下:函数的原型如下:CPoint MoveTo(int x,int y);CPoin
18、t MoveTo(POINT point);LineTo()函数用于在当前点与起点之函数用于在当前点与起点之间绘制一条直制一条直线,该函数的原型如下:函数的原型如下:BOOL LineTo(int x,int y);BOOL LineTo(POINT point);3 3弧线弧线与与绘制直制直线类似,似,绘制弧制弧线也需要在两也需要在两个函数:个函数:Arc()函数和函数和ArcTo()函数。函数。Arc()函数用于函数用于绘制弧制弧线所在的所在的边界矩界矩形,形,该函数的原型如下:函数的原型如下:BOOL Arc(int x1,int y1,int x2,int y2,int x3,int
19、y3,int x4,int y4);BOOL Arc(LPCRECT lpRect,POINT ptStart,POINT ptEnd);4 4线条集线条集在在CDC类中,可以直接中,可以直接调用用Polyline()和和PolylintTo()函数函数绘制弧制弧线,函数原型如,函数原型如下:下:BOOL Polyline(LPPOINT lpPoints,int nCount);BOOL PolylineTo(const POINT*lpPoints,int nCount);图图5.9程序程序sample0505的运行结果的运行结果 5.4.2 5.4.2 形状函数形状函数点点线函数是指函数
20、是指对矩形、矩形、椭圆、扇形和、扇形和多多边形形进行操作的函数。行操作的函数。下面下面对这些形状函数分些形状函数分别进行行详细介介绍。1 1矩形矩形在在CDC类中,中,调用用Rectangle()函数可函数可以以绘制一个矩形,制一个矩形,该函数的原型如下:函数的原型如下:BOOL Rectangle(int x1,int y1,int x2,int y2);BOOL Rectangle(LPCRECT lpRect);2 2椭圆椭圆在在CDC类中,中,调用用Ellipse()函数可以函数可以绘制一个制一个椭圆,该函数的原型如下:函数的原型如下:BOOLEllipse(intx1,inty1,i
21、ntx2,inty2);BOOLEllipse(LPCRECTlpRect);3 3扇形扇形在在CDC类中,中,调用用Pie()函数可以函数可以绘制制一个扇形,一个扇形,该函数的原型如下:函数的原型如下:BOOL Pie(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4);BOOL Pie(LPCRECT lpRect,POINT ptStart,POINT ptEnd);4 4多边形多边形在在CDC类中,中,调用用Polygon()函数可函数可以以绘制一个多制一个多边形,形,该函数的原型如下:函数的原型如下:BOOL Polygo
22、n(LPPOINT lpPoints,int nCount);图图5.10程序程序sample0506的运行结果的运行结果 5.4.3 5.4.3 填充函数填充函数填充函数是指填充函数是指对指定指定图形的内部或是形的内部或是边框框进行行颜色填充。色填充。在在CDC类中,填充函数包括中,填充函数包括FillRect()、FrameRect()、FillSolidRect()和和InvertRect()。下面下面对这4个函数分个函数分别进行介行介绍。1 1FillRect()FillRect()函数函数在在CDC类中,可以中,可以调用用FillRect()函数函数使用指定的画刷填充一个矩形区域,使
23、用指定的画刷填充一个矩形区域,该函函数的原型如下:数的原型如下:void FillRect(LPCRECT lpRect,CBrush*pBrush);2 2FrameRect()FrameRect()函数函数在在CDC类中,可以中,可以调用用FrameRect()函函数使用指定的画刷数使用指定的画刷绘制矩形的制矩形的边框,框,该函函数的原型如下:数的原型如下:void FrameRect(LPCRECT lpRect,CBrush*pBrush);3 3FillSolidRect()FillSolidRect()函数函数在在CDC类中,可以中,可以调用用FillSolidRect()函数使用
24、指定函数使用指定颜色填充矩形区域,色填充矩形区域,该函数函数的原型如下:的原型如下:void FillSolidRect(LPCRECT lpRect,COLORREF clr);void FillSolidRect(int x,int y,int cx,int cy,COLORREF clr);4 4InvertRect()InvertRect()函数函数在在CDC类中,可以中,可以调用用InvertRect()函函数在指定矩形区域内数在指定矩形区域内显示当前示当前颜色的相反色的相反色,色,该函数的原型如下:函数的原型如下:void InvertRect(LPCRECT lpRect);图图
25、5.11程序程序sample0507的运行结果的运行结果 5.4.4 5.4.4 位图函数位图函数常用的位常用的位图函数有函数有PatBlt()、BitBlt()和和StretchBlt()。下面下面对这3种函数分种函数分别进行行详细介介绍。1 1PatBlt()PatBlt()函数函数在在CDC类中,中,调用用PatBlt()函数可以使函数可以使用光用光栅操作操作码在指定的矩形区域内在指定的矩形区域内创建一建一个位个位图模式,模式,该函数的原型如下:函数的原型如下:BOOL PatBlt(int x,int y,int nWidth,int nHeight,DWORD dwRop);2 2B
26、itBlt()BitBlt()函数函数在在CDC类中,中,调用用BitBlt()函数可以从函数可以从指定指定设备环境中复制一个位境中复制一个位图,该函数的函数的原型如下:原型如下:BOOL BitBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int ySrc,DWORD dwRop);3 3StretchBlt()StretchBlt()函数函数在在CDC类中,中,调用用BitBlt()函数可以从函数可以从指定指定设备环境中复制一个位境中复制一个位图,并,并对位位图进行行缩放操作,以适放操作,以适应目目标区域。区域。该函数
27、的原型如下:函数的原型如下:BOOL StretchBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int ySrc,int nSrcWidth,int nSrcHeight,DWORD dwRop);图图5.12【InsertResource】对话框】对话框 图图5.13查看位图资源查看位图资源 图图5.14程序程序sample0508的运程结果的运程结果5.5画笔与画刷画笔与画刷在在Windos程序程序设计中,需要中,需要经常使用常使用画笔(画笔(Pen)和画刷()和画刷(Brush)。)。一般情况下,画笔用于勾勒出一般
28、情况下,画笔用于勾勒出图形的形的轮廓,画刷用于填充廓,画刷用于填充图形的形的颜色。色。下面下面对画笔与画刷的具体知画笔与画刷的具体知识进行行详细讲解。解。5.5.1 5.5.1 使用库存画笔与画刷使用库存画笔与画刷在在Windows中,提供了中,提供了库存存对象。象。库存存对象是由操作系象是由操作系统维护的用于的用于绘制制屏幕的常用屏幕的常用对象,如画笔与画刷。象,如画笔与画刷。其中,其中,库存画笔如表存画笔如表5.4所示。所示。库存画刷如表存画刷如表5.5所示。所示。图图5.15程序程序sample0509的运行结果的运行结果 5.5.2 5.5.2 自定义画笔自定义画笔在在Windows中
29、,可以自定中,可以自定义画笔。画笔。这时,需要用到,需要用到MFC中的中的CPen类。在在CPen类中,中,调用用CPen()、CreatePen()或或CreatePenIndirect()函数可以函数可以创建画笔。建画笔。1 1CPen()CPen()函数函数CPen类的构造函数原型如下:的构造函数原型如下:CPen();CPen(int nPenStyle,int nWidth,COLORREF crColor);2 2CreatePen()CreatePen()函数函数CreatePen()函数的原型如下:函数的原型如下:BOOL CreatePen(int nPenStyle,int
30、 nWidth,COLORREF crColor);3 3CreatePenIndirect()CreatePenIndirect()函数函数CreatePenIndirect()函数的原型如下:函数的原型如下:BOOL CreatePenIndirect(LPLOGPEN lpLogPen);图图5.16程序程序sample0510的运行结果的运行结果 5.5.3 5.5.3 自定义画刷自定义画刷在在Windows中,也可以自定中,也可以自定义画刷。画刷。在在CDC类中,可以中,可以调用用CBrush类中的中的CBrush()、CreateSolidBrush()、CreateHatchBr
31、ush()、CreatePatternBrush()和和CreateBrushIndirect()等函数等函数创建自定建自定义画刷。画刷。下面下面对这几个函数分几个函数分别进行介行介绍。1 1CBrush()CBrush()函数函数CBrush类的构造函数原型如下:的构造函数原型如下:CBrush();CBrush(COLORREF crColor);CBrush(int nIndex,COLORREF crColor);2 2CreateSolidBrush()CreateSolidBrush()函数函数CreateSolidBrush()函数用于函数用于创建一建一支具有指定支具有指定颜色的
32、色的实心画刷。心画刷。该函数的原型如下:函数的原型如下:BOOL CreateSolidBrush(COLORREF crColor);3 3CreateHatchBrush()CreateHatchBrush()函数函数CreateHatchBrush()函数可以函数可以创建一建一个具有指定阴影的画刷。个具有指定阴影的画刷。该函数的原型如下:函数的原型如下:BOOL CreateHatchBrush(int nIndex,COLORREF crColor);4 4CreatePatternBrush()CreatePatternBrush()函数函数CreatePatternBrush()函
33、数可以函数可以创建建一个具有指定位一个具有指定位图模式的模式的逻辑画刷。画刷。其中,位其中,位图不能是不能是DIB类型的位型的位图,DIB位位图是由是由CreateDIBSection()函数函数创建建的。的。该函数的原型如下:函数的原型如下:BOOL CreatePatternBrush(CBitmap*pBitmap);5 5CreateBrushIndirect()CreateBrushIndirect()函数函数CreateBrushIndirect()函数可以函数可以创建建具有指定具有指定风格、格、颜色和模式的色和模式的逻辑画刷。画刷。该函数的原型如下:函数的原型如下:BOOL Cr
34、eateBrushIndirect(const LOGBRUSH*lpLogBrush);图图5.17【InsertResource】对话框】对话框 图图5.18查看位图资源查看位图资源 图图5.19程序程序sample0511的运行结果的运行结果小结小结本章主要介本章主要介绍了了Windows中中绘图的一的一些机制与原理,包括些机制与原理,包括设备上下文件、上下文件、GDI对象、象、绘图函数、画笔与画刷,其中,函数、画笔与画刷,其中,对于于设备上下文的知上下文的知识需要需要读者仔者仔细体会,体会,对于于绘图操作,只要熟悉各种函数的使用就操作,只要熟悉各种函数的使用就可以了。可以了。下一章将要
35、向下一章将要向读者介者介绍Windows中的中的文本和字体。文本和字体。上机指导上机指导实验一:一:绘制一个矩形制一个矩形实验内容内容创建一个基于建一个基于单文档的文档的应用程序用程序TestOne,并在其中,并在其中绘制一个制一个圆角矩形,如角矩形,如图5.20所示。所示。图图5.20实验一的运行结果实验一的运行结果 实验目的目的熟悉如何使用熟悉如何使用设备上下文上下文绘图,并熟,并熟练使用使用这些些绘图函数。函数。实现思路思路在在5.5.2节中,介中,介绍了如何利用了如何利用绘图函函数数绘制各种各制各种各样的的图形。形。所以在此只需按照所以在此只需按照5.5.2节中的示例思中的示例思路,合
36、理利用路,合理利用绘图函数即可。函数即可。实验二:填充矩形二:填充矩形实验内容内容创建一个基于建一个基于单文档的文档的应用程序用程序TestTwo,并在其中,并在其中绘制一个矩形。制一个矩形。然后使用然后使用颜色画刷填充矩形,如色画刷填充矩形,如图5.21所示。所示。图图5.21实验二的运行结果实验二的运行结果 实验目的目的熟悉如何使用熟悉如何使用设备上下文上下文绘图,并熟,并熟练使用画刷使用画刷对特定的特定的图形形进行填充操作。行填充操作。实现思路思路在在5.5.2节中,介中,介绍了如何利用了如何利用绘图函函数数绘制各种各制各种各样的的图形。形。所以在此只需按照所以在此只需按照5.5.2节中
37、的示例思中的示例思路,合理利用路,合理利用绘图函数即可。函数即可。然后使用画刷然后使用画刷对特定的特定的图形形进行填充操行填充操作。作。实验三:与鼠三:与鼠标相关的相关的图形形实验内容内容创建一个基于建一个基于单文档的文档的应用程序用程序TestThree,并,并对鼠鼠标的的单击消息消息进行响行响应。当在客当在客户区内的不同位置区内的不同位置单击鼠鼠标时,会出会出现不同的矩形。不同的矩形。该矩形的一个角的坐矩形的一个角的坐标点固定,但另一点固定,但另一个坐个坐标点的坐点的坐标正是当前鼠正是当前鼠标所在的位置。所在的位置。运行运行时结果如果如图5.22所示。所示。图图5.22实验三的运行结果实验三的运行结果 实验目的目的在在该实验中,中,读者学会如何者学会如何对鼠鼠标的消的消息息进行行简单的响的响应。实现思路思路首先首先创建一个基于建一个基于单文档的文档的应用程序,用程序,然后添加鼠然后添加鼠标左左键单击消息,并在消息,并在该消息消息响响应函数中添加函数中添加绘图函数。函数。