VC++6.0入门【第五章 图形和文本输出】
【工学】VC6.0使用方法共(15页).
第一部分 C 语言编程环境简介第 1章计算机程序设计实验的一般步骤1.1 计算机程序设计实验的目的C 语言程序设计是一门实践性很强的课程,该课程的学习有其自身的特点,学习者必须通过大量的编程训练,在实践中掌握程序设计语言,培养程序设计的基本能力,并逐步理解和掌握程序设计的思想和方法。
具体的说,通过上机实践,应该达到以下几点要求:1. 使学习者能很好地掌握一种程序设计开发环境的基本操作方法 (例如 (Visual C++6.0 ,掌握应用程序开发的一般步骤。
2. 在程序设计和调试程序的过程中, 可以帮助学习者进一步理解教材中各章节的主要知识点,特别是一些语法规则的理解和运用,程序设计中的常用算法和构造及应用,也就是所谓“在编程中学习编程” 。
3. 通过上机实践, 提高程序分析、程序设计和程序调试的能力。
程序调试是一个程序员最基本的技能,不会调试程序的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。
通过不断的积累经验,摸索各种比较常用的技巧,可以提高编程的效率和程序代码的质量。
下面介绍计算机程序设计实验的一般步骤:1.2 计算机程序设计实验的准备上机前需要做好如下准备工作,以提高上机编程的效率。
(1 在计算机上安装一种程序设计开发工具,并学会基本的操作方法。
(2 复习与本次实验相关的教学内容和主要知识点。
(3 准备好编程题程序流程图和全部源程序代码,并且先进行人工检查。
(4 对程序中有疑问的地方做出标记, 充分估计程序运行中可能出现的问题, 以便在程序调试过程中给予关注。
(5准备好运行和调试程序所需的数据。
1.3 计算机程序设计实验的步骤(1运行程序设计开发工具,进入程序设计开发环境。
(2新建一个文件,输入准备好的程序。
(3 不要立即进行编译和连接, 应该首先仔细检查刚刚输入的程序, 如有错误及时改正,保存文件后再进行编译和连接。
(4 如果在编译和连接的过程中发现错误, 根据系统的提示找出出错语句的位置和原因,改正后再进行编译和连接。
VC++第5章图形绘制
VC++第5章图形绘制第5章图形绘制在Visual C++6.0中,掌握图形程序设计⽅法是⾮常重要的。
因为图形在任何⼀个可视化⼯程项⽬中都是不可缺少的。
CDC(设备环境)类封装了图形绘制所需要的各种操作。
本章我们将通过实际例⼦和较详细的阐述,来了解和掌握如何使⽤设备环境类(CDC)及图形设备接⼝(GDI)进⾏图形绘制。
5.1 设备环境与设备环境类(CDC)5.1.1 设备环境设备环境也称设备上下⽂(Device Context,简称DC),是计算机物理设备的代表,也是图形设备接⼝的主要组成部分。
由于Windows是⼀个与设备⽆关的操作系统,即Windows不允许直接访问硬件,如果⽤户想将⽂本和图形绘制到显⽰器或其它设备中去,必须通过“设备环境”这个抽象层与硬件进⾏通信,设备上下⽂对象的作⽤就是实现Windows的设备⽆关性,任何向屏幕上进⾏输出的功能都要间接地通过它来完成。
设备上下⽂是Windows的⼀种数据结构,它包含了有关如显⽰器或打印机等设备的绘图属性信息。
所有绘画都是通过设备上下⽂对象来实现的,该对象封装了Windows 的画线、图形和⽂本的API函数。
设备上下⽂允许在Windows下独⽴于设备的绘画。
设备上下⽂不仅能够被⽤来在屏幕上绘画,它也可以将绘画输出到打印机和图元⽂件中。
5.1.2 设备环境类设备环境类CDC直接继承于CObject类,该类定义了⼀类设备对象。
CDC对象提供了⾮常多的成员函数,与设备环境的显⽰器、打印机等⼀起⼯作。
例如,如果要在显⽰器等设备上绘制图形,我们可以⽤MFC提供的设备环境类CDC类,因为CDC类中包含了绘图所需要的所有成员函数。
同时。
MFC还提供了以下⼏个CDC的派⽣类:1、CPaintDC类此类⽐较特殊,它的构造函数和析构函数都是针对OnPaint进⾏的。
⽤户⼀旦获得相关的CDC指针,就可以将它当做任何设备环境(包括屏幕、打印机)指针来使⽤,CPaintDC类的构造函数会⾃动调⽤BeginPaint,⽽它的析构函数则会⾃动调⽤EndPaint。
Visual C 6.0开发环境使用入门
1 本实验的实验目的是什么? 2 本实验的实验任务是什么? 3 MFC 应用程序是如何实现消息机制的?
8
1
4
单击“确定”按钮,弹出如图所示的编辑窗口,在该窗口中进行源代码的输入(图中 已输入源程序) 。
2 编译并运行源程序 (1)完成源程序的编译后,选择 文件|保存(或选择 图标)保存所编辑的源程序文
5
件。 (2)选择 组建|编译[VCP01.cpp](或选择 图标)编译源程序。如果程序有语法错
3 使用 Debug 调试程序 (1)设置断点。单击源程序中需要设置断点的代码行,按 F9 键即可在该行设置一个断 点,如图所示。同样方法可设置其他断点。在已设置断点的代码行再次按 F9 键,即可取消 所设置的断点。
6
(2)选择组建|开始调试|GO 菜单项(或按 F5 键) ,进入 Debug 调试状态,这时组建菜 单变为 调试 菜单,如下图所示
误, 在屏幕正下方的状态窗口中将显示源程序的所有语法错误信息。 根据这些错误提示在编 辑窗口中修改源程序,直至编译时没有任何语法错误。
(3)选择 组建|组建[VCP01.exe](或选择
图标)编译源程序。如果错误信息提示,
则先排除这些错误;如果没有错误信息,则已经建立了 VCP01.exe 可执行文件。 (4)选择组建|执行 VCP01.exe(或选择 图标) ,运行 VCP01 程序。
2
在弹出的如图所示的“Win32 Console Application-步骤 1 共 1 步” 对话框中选择一个 空工程 单选按钮,并单击完成按钮,在弹出的“新工程信息”对话框中单击“确定”按钮, 完成项目 vcp01 创建。
3
(3)编辑并建立 C++源程序 选择“工程|增加到工程”菜单项,弹出如图所示的“新建”对话框,在该对话框的“文 件”选项卡中选择 C++ Source File 选择,在“文件”文本框中输入文件名 vcp01,其他选项 选择默认值。
VisualC++6.0实例教程(全套课件)
返回第2章
程序的实现步骤
1. 2. 利用AppWizard生成单文档程序框架(DocView ) 为视类添加数据成员
BOOL m_bMouseDown; HCURSOR m_hCross; HCURSOR m_hArrow; CPoint m_ptOld; CPoint m_ptStart; //标识鼠标左键是否按下 //十字型鼠标句柄 //标准型鼠标句柄 //临时点 //画线的起始点
2.1
m_nLine++;
} else if(m_strDisplay.GetLength() < 64) //当前行字符数小于64 m_strDisplay += nChar;
CClientDC dc(this);
TEXTMETRIC tm; dc.GetTextMetrics(&tm); int nLineHeight = tm.tmHeight + tm.tmExternalLeading; dc.TextOut(0, m_nLine * nLineHeight, m_strDisplay); CView::OnChar(nChar, nRepCnt, nFlags); }
m_bMouseDown = false;
m_hCross = AfxGetApp()->LoadStandardCursor(IDC_CROSS); m_hArrow = AfxGetApp()->LoadStandardCursor(IDC_ARROW); }
3.为视类添加键盘消息响应函数
void CDocViewView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { if(nChar == VK_RETURN) { m_strDisplay.Empty(); //如果按下回车键
Visual c++6.0目录及简介
目录回到顶部↑第1章概述1.1 MFC简介1.2 MFC分层1.2.1 根类1.2.2 MFC应用程序结构类1.2.2.1 应用程序和线程支持类1.2.2.2 命令发送类1.2.2.3 文档类1.2.2.4 视图类(结构)1.2.2.5 框架窗口类(结构)1.2.2.6 文档模板类1.2.3 窗口、对话框和控件类1.2.3.1 框架窗口类(窗口)1.2.3.2 视图类(窗口)1.2.3.3 对话框类1.2.3.4 控件类1.2.3.5 控件栏类1.2.4 输出(设备文本)和绘图类1.2.5 简单数据类型类1.2.6 数组、列表和映射类.1.2.6.1 数组、列表和映射的模板类1.2.6.2 用于数组的类1.2.6.3 用于列表的类1.2.6.4 用于映射的类1.2.7 文件和数据库类1.2.7.1 文件I/O类1.2.7.2 DAO类1.2.7.3 ODBC类1.2.8 Internet和网络类1.2.8.1 ISAPI类1.2.8.2 Windows Sockets类1.2.8.3 WiInet类1.2.9 OLE类1.2.9.1 OLE容器类1.2.9.2 OLE服务器类1.2.9.3 OLE拖放和数据传输类1.2.9.4 OLE通用对话类1.2.9.5 OLE自动化类1.2.9.6 Activex控类1.2.9.7 Activex文档类1.2.9.8 与0LE有关的类包括:1.2.10 调试和异常类1.2.10.1 调试支持类包括:1.2.10.2 异常类包括:1.3 MFC与C语言API第2章根类和CWod类2.1 CObject类2.2 CRuntimeClass类2.3 CWnd类第3章 MFC应用程序结构类3.1 CArchive类3.2 CCmdTarget类3.3 CcmdUI类3.4 CcommandLineInfo类3.5 CcreateContext类3.6 CcriticalSection类3.7 CctrView类3.8 CboRecorldView类3.9 CDocItem类3.1O CDockstate 类3.11 CDocTemplate 类3.12 CDocunlent 类3.13 CEdit 类3.14 Cevent 类3.15 CFormView 类3.16 CFralneWnd 类3.17 Chttyfilter 类3.18 ChttpseNer 类3.19 CListView 类3.20 CMDIChildWnd 类3.21 CMDIFrameWnd 类3.22 CMultiDocTemplate 类3.23 Cmultilock 类3.24 CMutex 类3.25 COledocuntent 类3.26 COleIPFrallleWnd 类3.27 COleLinkingDoc 类3.28 COleServerDoc 类3.29 CRecentfilelist 类3.30 CRecordView 类3.3l CRichEditDoc 类3.32 CrLichEditView 类3.33 CScroIIView 类3.34 CSemaphore 类3.35 CSindeDocTemplate 类3.36 CSingleLock 类3.37 CSyncObject 类3.38 CTreeView 类3.39 CView 类3.40 CWaitCunor 类3.41 CWinApp 类3.42 CWinTread 类第4章窗口、对话框和控件类4.l CBinnapBuRon 类4.2 cnunon 类4.3 CCheckListBox 类4.4 CColorDialog 类4.5 CComboBox 类4.6 CCommonDialog 类4.7 CComboBoxEx 类4.8 CCon801Bar 类4.9 CDaoRecordView 类4.10 CDataExchallge 类4.11 CdateTimeChl 类4.12 CDialog 类4.13 CDialogBar 类4.14 CDrad.istBox 类4.15 CFUeDialog 类4.16 CFindReplaceDialog 类4.17 CFontDialog 类4.18 CHeaderC81 类4.19 CHotKeyCtrl 类4.20 CHUnIView 类4.21 CImageList 类4.22 CIPAddressCtr1 类4.23 CListBox 类4.24 CListCtrl 类4.25 CMenu 类4.26 CMiniFrallleWnd 类4.27 CMonthCaICUI 类4.28 COleBusyDialog 类4.29 COleChangelmnDaolog 类4.3O COleChallgeSoumeDialog 类4.3l COleConvertDialog 类4.32 COleDBRecordView 类4.33 COleDialog 类4.34 ColeDocObjectltem 类4.35 COlekseHDiaog 类4.36 COleIPFrameWnd 类4.37 COlePasteSpeciaIDailog 类4.38 COlePropeniesDialog 类4.39 COlePropertyPage 类4.40 COleUpdateDialog 类4.4l CPageSetupDialog 类4.42 CPrintDialog 类4.43 CPrintInfo 类4.44 CProgressCtrl 类4.45 CProrpertyPage 类4.46 CPropertyPageEx 类4.47 CPropertySheet 类4.48 CPropertySheetEx 类4.49 CRebar 类4.50 CReBarCtrl 类4.5l CRichEditCnRltem 类4.52 CRichEditCtrl 类4.53 CRjchEditDoc 类4.54 CRichEditView 类4.55 CScroUBar 类4.56 CSliderCtrl 类4.57 CSpinBuUonCtrl 类4.58 CSpliaerWnd 类4.59 CStatic 类4.60 CStatusBar 类4.6l CStatusBarCtrl 类4.62 CTooIBar 类4.63 CTooIBarCtrl 类4.64 CTooITipCal 类4.65 CTreeCtrl 类第5章绘图和打印类5.l CBitmap 类5.2 CBrush 类5.3 CClientDC 类5.4 CDC 类5.5 CFont 类5.6 CFontDialog 类5.7 GdiObject 类5.8 CMetaFileDC 类5.9 CPaintDC 类5.1O CPalene 类5.11 CPen 类5.12 CPoint 类5.13 CRect 类5.14 CRectTracker 类5.15 CRgn 类5.16 CSize 类5.17 CWhdowDC 类第6章简单数据类型类6.1 COleCunency 类6.2 COleDateTime 类6.3 COleDateTimeSpall 类6.4 COleVadant 类6.5 CString 类6.6 CTune 类6.7 CTimeSpall 类第7章数组、列表和映射类7.1 CAmay 类7.2 CByteAnay 类7.3 CDWordAmay 类7.4 CList 类7.5 CMap 类7.6 CMapPtrToPtr 类7.7 CMapPtrToWord 类7.8 CMapString gToOb 类7.9 CMapStringToPtr 类7.1O CMapStringToString 类7.11 CMapWordToOb 类7.12 CMapWordToPtr 类7.l3 CObAmay 类7.14 CObList 类7.15 CPtrArray 类7.16 CPtrList 类7.17 CStringAmay 类7.18 CSuingList 类7.1l9 CTypedPtrAnay 类7.20 CTypedPUList 类7.21 CTypedPtrMap 类7.22 CUlntAnay 类7.23 CWordAmay 类第8章文件和数据库类8.1 CArchiveException 类8.2 CDaoDatabase 类8.3 CDaoException 类8.4 CDaoFieldExchange 类8.5 CDaoQueryDef 类8.6 CDaoRecordset 类8.7 CDaoTableDef 类8.8 CDaoWorkSpace 类8.9 CDatabase 类8.1O CDBException 类8.11 CDBVadant 类8.12 CFieldExchange 类8.13 CFile 类8.14 CFileException 类8.15 CHUnIStream 类8.16 CLongBinary 类8.17 CMemFile 类8.18 COleSUeamFile 类8.19 CRecordset 类8.20 CSharedFile 类8.21 CSocketFile 类8.22 CStdibFile 类第9章 Internet 和网络9.l CAsyncSocket 类9.2 CFileFind 类9.3 CFtyConnection 类9.4 CFtpFileFind 类9.5 CGopherConnection 类9.6 CGopherFile 类9.7 CGopherFileFind 类9.8 CGopherLocator 类9.9 CHttpConnection 类9.1O CHttpFile 类9.11 CHttpFilterContext 类9.12 CHtWServerConbct 类9.13 ClntemetConnection 类9.14 ClntemetException 类9.15 Cbkmefile 类9.1l6 CkakmetSession 类9.17 CSocket 类第10章 OLE 类10.l CAsyncMonikerFile 类1O.2 CCachedDataPathProperty 类1O.3 CConnectionPoint 类1O.4 CDataPadTProperty 类1O.5 CDocObjectServer 类1O.6 CDocObjectServerltem 类1O.7 CFontrlolder 类10.8 CMonikerFile 类1O.9 COleClienatem 类1O.1O COleCmdUI 类1O.1l COleControl 类10.12 COleConveHDialog 类10.l3 COleDataObject 类10.l4 COleDataSollrce 类10.15 COleDispatchDriver 类1O.l6 COleDispatchException 类10.17 COleDropSource 类1O.l8 COleDropTarget v10.l9 COleException 类1O.20 COleLiakingDoc 类10.2 l COleMessageFilter 类10.22 COleObjectFactory 类10.23 COleResizeBar 类10.24 COleSafeAmay 类10.25 COleServerltem 类10.26 COleTemplateServer 类10.27 CPictureHolder 类1O.28 CPropExchange 类10.29 CrUchEditCntrItem 类第11章调试和异常类11.1 CDumpContext 类11.2 CException 类11.3 CMemoryException 类11.4 CMemoryState 类11.5 CNotSuppoHedException 类11.6 CResomceException 类11.7 CUserException 类前言回到顶部↑VisualC++以其非常友好的人机界面,强大的功能成为目前最受欢迎的开发语言之一。
VC++6.0使用手册(史上最全)
图1-1Visual C++界面开项目工作区文件时其他文件随即会自动打开。
在此文件夹下还会创建 Res(资源)、Debug(调试)、Release(发行)等子文件夹。
2.2编辑 在编辑窗口打开、浏览文件、输入、修改、复制、剪切、粘贴、查找、替换、撤销等操作,可以通过菜单完成,也可以通过工具栏按钮完成,这些与 Word 之类的 windows 编辑器用法完全相同,这里就不再重复叙述了。
2.3辅助VC 不仅提供了“语法着色”帮助我们阅读程序,还可以通过一些快捷键检查常见的括号不匹配错误。
MSDN 也可以在编辑过程中提示存在的变量名、函数名。
很多程序员借助类似 Visual Assist X 的工具辅助开发,减少程序出错的可能性。
3.开发 C 程序3.1开发单个 C 语言程序1. 创建一个工作文件夹。
由于开发过程会产生一系列文件,建议每开发一个新的 C 程序都创建一个工作文件夹。
还可以将所有工作文件夹集中到一起,如E:\LXH\EX01-01 、E:\LXH\EX03-02 等。
2. 启动 Visual C++。
3. 新建一个 C 语言源程序。
选择菜单:File 下的 New 菜单项,出现如图 1-2 所示 new(新建)对话框。
图1-2选择菜单File下的New菜单项选择 Files标签下的 C++Source File 在“E:\LXH\EG01-01”文件夹中创建C 程序:eg01-01.c,如图 1-3 所示。
图1-3Files标签4. 输入、编辑源程序。
注意不要输入中文标点符号,要及时按 Ctrl+S 保存文件,如图 1-4 所示。
图1-4输入源程序5.编译、连接。
点击“BuildMiniBar”工具栏上的“Build”按钮进行编译、连接。
也可以选择菜单 Build 下的 Build (F7) 菜单项或Rebuild All菜单项。
更简捷的方法是直接按 F7 功能键。
Visual C++将提示创建默认工作区,如图 1-5 所示。
附录C Visual C++ 6.0使用 指南_C语言程序设计案例教程(第2版)_[共6页]
269附录CVisual C++ 6.0使用指南Visual C ++ 6.0是微软公司开发的Microsoft Visual Studio 6.0软件开发套件中主要成员之一,支持C 语言和C ++语言的程序设计,可以用于开发Windows 环境中的可执行程序、动态连接库、COM 构件、ActiveX 构件等多种形式的计算机软件。
Visual C ++ 6.0软件是一个集成了可视化编辑、编译、连接、运行和调试等软件开发功能,是目前用户最多、应用领域最广的集成开发环境之一。
鉴于本书的编写目的,本附录将介绍利用Visual C ++ 6.0环境开发C 语言程序的主要方法。
其余内容详见介绍Visual C ++环境的专用资料。
1.Visual C ++ 6.0环境的用户界面对于安装好的Visual C ++ 6.0软件,用户可以在桌面或程序菜单中找到Microsoft Visual C ++ 6.0的图标;通过鼠标选择该图标,Visual C ++ 6.0软件被启动,展示出如附图C-1所示的用户界面。
附图C-1 Visual C ++ 6.0的用户界面270 Visual C++ 6.0的用户界面由一组菜单条、工具条和多个窗口组成。
菜单条提供了“File”、“Edit”、“View”等9个子菜单。
其中,“File”菜单用于创建工作区(Workspace)、工程(Project)等各种文件相关的命令;“Edit”菜单提供编辑命令;“View”菜单用于配置用户界面中分布的视图;“Insert”菜单用于创建各种程序和数据资源;“Project”菜单提供工程管理命令;“Build”菜单提供编译、运行和调试等命令;“Tool”菜单提供多种开发工具的入口;“Window”菜单为中右侧窗口中的多个编辑子窗口提供多种显示方式;“Help”菜单提供了帮助信息的入口。
用户界面中的工具条为几种常用命令的使用提供了快捷键,用户可以在工具条上移动鼠标,来了解每个快捷键的功能。
VC++6.0入门教程
VC++6.0使用入门教程1、双击桌面快捷方式打开VC++6.02、或者是从电脑的“开始菜单”中,选择“所有程序”,在“Microsoft Visual C++ 6.0”目录中选择“Microsoft Visual C++ 6.0”来打开VC++6.03、打开程序会出现如下界面4、打开程序后界面如下:5、将每日提示关闭即可,可以将启动时显示提示前的勾去掉。
6、新建CPP源文件6.1、点击文件菜单,选择新建选项6.2、选择文件标签,选择C++ Source File,在文件名处的编辑框输入你要新建的C++程序源文件的文件名,文件类型为CPP。
6.3、点击上图位置编辑框后面的按钮选择要新建的C++源文件的存放位置。
驱动器下拉框用来选择要存放的磁盘。
点击确定来确定存放位置。
7、返回6.2的窗口时,点击确定,进入源文件编辑页面。
8、在上面的编辑框内输入你要调试的C语言程序。
9、编译运行你刚才所编辑的C语言程序点击上图中按钮,对你编写的C语言程序进行调试,看看有没有错误,有的话改正,没有的话就可以再按连接按钮检查连接(多文件工程时常用,检查文件间是否正常连接),最后,点运行按钮,就可以运行了。
10、运行成功就会弹出如下窗口拓展阅读:文件扩张名是.h,代表的是头文件,一般是书写一些函数原型,以及一些在整个程序中常用到的结构体,频繁使用的函数说明,定义等等;文件扩张名为.cpp的,是C++的源文件,也是最常用到的文件,每建立一个工程都要至少一个源文件(至少要有一个函数入口——主函数main() ),包含了核心代码;1、推荐大家看一本书:《高质量C++/C编程指南》(林锐)图书馆估计有借的,养成一个良好的编程风格是很有必要的。
附:《高质量C++/C编程指南》下载地址:/topics/2821196/2、对于那些想提高下自己对C++编程理解的同学,推荐大家在C语言学习了差不多的时候看下《Thinking in C++》这本书,这本书博大精深,值得大家仔细研读,会很有收获。
实验一vc6.0opengl绘图环境及简单图形的输出
任课教师:马文娟《3D图形学》(2013-2014学年第1学期)实验报告学号:姓名:班级:实验一VC++6.0+OpenGL绘图环境及简单图形的输出一、实验目的1、熟练使用实验主要开发平台VC++6.0;2、进一步熟悉OpenGL的主要功能;3、掌握OpenGL的绘图流程和原理;4、掌握OpenGL的基本数据类型、核心函数的使用。
二、实验内容创建一个OpenGL工程,利用OpenGL库函数进行简单图形设计与绘制。
三、实验原理1、基本语法(C版本下的OpenGL语法)OpenGL基本函数均使用gl作为函数名的前缀,如glClearColor();实用函数则使用glu作为函数名的前缀,如gluSphere()。
OpenGL基本常量的名字以GL_开头,如GL_LINE_LOOP;实用常量的名字以GLU_开头,如GLU_FILL。
一些函数如glColor*()(定义颜色值),函数名后可以接不同的后缀以支持不同的数据类型和格式,如glColor3b()、glColor3d()、glColor3f()和glColor3bv ()等,这几个函数在功能上是相似的,只是适用于不同的数据类型和格式,其中3表示该函数带有三个参数,b、d、f分别表示参数的类型是字节型、双精度浮点型和单精度浮点型,v则表示这些参数是以向量形式出现的。
OpenGL定义了一些特殊标识符,如GLfloat、GLvoid,它们其实就是C中的float 和void。
2、程序的基本结构OpenGL程序的基本结构可分为三个部分:1)第一部分是初始化,主要是设置一些OpenGL的状态开关,如颜色模式(RGBA 或ALPHA)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验、裁剪等。
这些状态一般都用函数glEnable(…)、glDisable(…)来设置,“…”表示特定的状态。
2)第二部分设置观察坐标系下的取景模式和取景框位置大小,主要利用了三个函数:函数void glViewport(left, top, right, bottom) 设置在屏幕上的窗口大小,四个参数描述屏幕窗口四个角上的坐标(以像素表示);函数void glOrtho(left, right, bottom, top, near, far) 设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体;函数void gluPerspective(fovy, aspect, zNear, zFar) 设置投影方式为透视投影,其取景体积是一个截头锥体。
VC++6.0使用教程
运行程序
断点调试程序
断点调试程序 F9
关闭文件和工作区
选择菜单“File\Close WorkSpace”,关闭当前 的工作区和所有打开的文件。
24
VC++6.0 使用教程
1
用VC编写控制台程序
• Microsoft Visual C++(简称VC)是是微 软推出的一款基于其Windows系统C++ 编译器,将“高级语言”翻译为“机器 语言(低级语言)”的程序。VC是一个 功能强大的可视化软件开发工具。
什么是控制台程序?
• 控制台程序(Win32 Console pplication) ,就是能够运行在MS-DOS环境中的程 序。
鼠标左键单击Windows操作系统的“开始” →“程序” →“Microsoft Visual Studio 6.0” →“Microsoft Visual C++ 6.0”
新建
File → New (Ctrl+N)
创建一个新的项目文件
新建工程命名
修改工程存放路径
创建一个空工程
生成一个空工程
VC++6.0的编辑窗口
自动生成的文件和文件夹
工程管理结构
WorkSpace Project
.h 我们一般把自定义数据类型、函数等的定义 和声明放置在头文件中(*c 把相应的实现细节放置在(*.c)文件中
Project
新建C源程序文件
编辑文件
编译源程序
编译源程序
int main() {
/* 向标准输出stdout输出一个字符串 */
printf(“Hello, World!\n”);
VC++6.0操作简介及编程规范
VC++6.0操作简介一、 VC++6.0VC++6.0二、 VC++6.0环境的基本操作1. 建立应用程序 操作步骤如下:(1) 关闭 当前工作区:【文件】→【关闭 工作区】 (必要时) (2) 建立工程: 【文件】 →【新建】(出现“新建”对话框)在“新建”对话框中选中“工程”选项卡→选中其中的“Win32 Console Application”项→选择存储“位置”→输入工程名→单击“确定”按钮(出现“Win32Console Application”对话框)在“Win32 Console Application”对话框中选择“An empty project”选项→单击“完成”按钮注意:在操作过程中,如果出现提示性对话框,可根据具体情况按“确定”或“取消”按钮。
至此,一个新的工程已经建立,接下来,可以在该工程中建立文件或(和)将已经存在的文件添加到工程中:在工程中新建文件:【工程】→【添加工程】→【新建】(出现“新建”对话框)在“新建”对话框中选中“文件”选项卡→选中其中的“C++ Source File”或者“C/C++ Header File”项→选择新建的置(目录)→输入文件名→单击“确定”按钮→输入文件内容。
例如,新建的名为M1.cpp的源文件内容如下:向工程中添加文件【工程】→【添加工程】→【Files…】(出现“插入文件到工程”对话框)在“插入文件到工程”对话框中选中要插入的文件→选择文件要插入的工程(插入到)→单击“确定”按钮2.编辑文件操作步骤如下:在“工作区”窗口中选择“FileView”选项卡→展开相应工程的文件分支(工程名files)→双击类要编辑的文件名(此时,相应文件的内容已经显示在编辑窗口中)→对文件进行编辑3.编译、构建与运行应用程序编译源文件:在“工作区”窗口选择“FileView”选项卡→选择要编译的源文件→【编译】→【编译xx】构建可执行文件:设置活动工程(工作区中有多个工程时):【工程】→【设置活动工程】→【xx (工程名)】【编译】→【构建xx.exe】运行应用程序:设置活动工程(工作区中有多个工程时):【工程】→【设置活动工程】→【xx (工程名)】【编译】→【执行xx.exe】4.在工程中新建类(1)新建类:设置活动工程(工作区中有多个工程时需要此步)。
Visual C++6.0 开发环境使用入门
Visual C++6.0 开发环境使用入门一、 点击File 菜单项,选择New 命令新建一个项目(new project), 如图1所示。
图1 文件File 菜单中的New 新建命令出现图2的新建对话框,在确定了项目名称,项目类型,项目存放位置三个选项后点击OK 按钮。
图2 Visual C++6.0的新建对话框的项目标签然后出现如图3的对话框,选择An empty project (空项目),点击Finish 按钮,我们选择Win32 Console Application 控制台应用类型项目名称项目存放位置这里提供了17个项目类型选项新建命令图3 控制台应用对话框然后出现如图4的新建项目信息对话框,点击OK按钮完成项目的创建。
图4 新建项目信息对话框二、点击File菜单项,选择New命令,新建一个C++源程序文件,(或者编辑一个已有的C++源程序文件),出现如下对话框:图5 新建对话框的文件标签确定文件类型和文件名后,点击OK 按钮出现文本编辑窗口,在文本编辑窗口输入源程序,如图6所示。
图6 文本编辑窗口在文本编辑窗口输入C++源程序代码,如图7所示:文件类型文件名此为文本编辑窗口这是文件视图窗口(FileView )点击此处可以显示类视图窗口(ClassView)输入的C++源程序代码文件视图窗口分类显示本项目中的文件名图7 C++源程序文件的输入和编辑三、点击Build命令按钮,编译、链接程序Build命令按钮(编译、链接程序)图8 C++源程序文件的编译、链接编译、链接完成后,观察编译信息显示窗口出现的提示信息,如果没有出现错误,下一步就试运行程序。
编译和链接信息显示窗口图9 编译和链接信息显示窗口四、如图10,点击Execute Program按钮或者按键盘(Ctrl+F5),运行程序Execute Program按钮(执行程序按钮)图10 执行程序五、观察程序的运行结果是否正确。
VisualBasic6.0开发(入门教程分享)
VisualBasic6.0开发(入门教程分享)关于Visual Basic 6.0类开发 (vb 类模块学习入门教程)关于Visual Basic 6.0类开发(上)--------------------------------------------------------------------------------对程序员和编程爱好者来说,VB中类的技术是学习中的一个难点,在大型软件的开发过程中,模块(Moudle)、控件(Active ocx)、链接库(Active dll)和类(Class moudle)构成了系统化、高效化的软件工程,而类的技术是控件和链接库技术的基础,因此掌握类的理论和编程方法是非常有意义的。
(一)类的基本定义和应用概述;类是包含了方法、属性、数据成员的高级代码模块,它既在模块的范畴之内,又是一个没有图形界面的Active ocx,程序员可以象使用控件一样使用它,但却不能看到它,值得注意的是,类是不能继承的。
类能够使我们高效的完成对某一个或者某几个特定的对象的复杂操作,对象的动作就是类的方法,对象的属性就是类的属性过程。
相对而言,如果编程的对象是一组事物,那么,我们采用标准模块的方式是非常合适的,在下列两种情况下,应该使用类进行代码处理:(1)创建大量性质相近的对象;(2)提高代码的封装性。
类的创建非常简单,在进行代码编写的时候,在“工程”菜单中选择“添加类模块”项目,就可以添加一个空白的类。
类文件一般以.cls作为扩展名保存。
(二)类的方法的实现;类的方法类似于动态链接库的接口函数,它能够接受其他窗体代码的指定类型参数,并且传递到类中。
一般来说类的方法是能够指定是否有返回值的。
它在类中通常是一个public过程。
请看下面的代码示例,它使一个密码框拒绝非字母的输入:(1)类cls的代码;Option Explicit'变量检查Private WithEvents mytxt As TextBox'本类中的方法接受和控制一个text密码框Dim isNUM As Boolean'类的模块级变量Public Sub Attach(itTEXT As TextBox)'接受外部变量到mytxt中Set mytxt = itTEXTEnd SubPrivate Sub mytxt_KeyUp(KeyCode As Integer, Shift As Integer)isNUM = (KeyCode >= 65) And (KeyCode <= 90)'测试密码框的键盘输入是否是英文字母If isNUM = False ThenBeepmytxt.Text = ""'如果输入不是英文字母则响铃并且清空密码框内容MsgBox "非法字符输入!"End IfDebug.Print mytxt.Text'调试输出密码框内容End Sub'类的代码结束(2)类的引用;已经编写完成的类可以经过两种格式进行引用,第一种方式:Private(public或者dim) myCLS (指定的类名)As New cls(编写完成的类名);第二种方式较多用于程序编写风格较“老”的程序员:首先在窗体代码中进行模块级声明――Dim myCLS As cls,然后在具体代码过程中进行具体定义―― Set mycls = New cls。
VC++6.0入门【第五章 图形和文本输出】
第5章图形和文本输出Windows使用图形设备接口(GDI)进行图形输出和文本输出,MFC封装了GDI对象,提供了CGdiObject类和CDC类支持图形输出和文本输出,本章你将学习使用CGdiObject类和CDC类在视图中输出各种图形和文本的方法和技巧。
5.1图形设备接口和CDC5.1.1图形设备接口(GDI)Windows操作系统通过图形设备接口,简称GDI (Graphics Device Interface),管理Windows程序的所有图形输出,包括显示在屏幕上的窗口,屏幕保护程序的运行,文档的打印。
GDI处理与不同输出设备的连接,从而应用程序开发者不需要去考虑基础硬件设备之间的不同。
应用程序可以使用GDI创建3种类型的图形输出:矢量图形、光栅图形和文本。
1.矢量图形矢量图形输出是指创建线和填充图形,包括点、直线、曲线、多边形、扇形和矩形。
2.光栅图形光栅图形输出是指光栅图形函数对以位图形式存储的数据进行操作,它包括各种位图和图标的输出。
在屏幕上表现为对若干行和列的像素操作,在打印机上则是若干行和列的点阵输出。
光栅图形是直接从内存到显存的拷贝操作,所以速度快,但是对内存要求高。
3.文本文本输出是GDI的另一项任务。
输出文本时文本的输出位置的计算不是以行为单位,而是以逻辑坐标为单位计算。
用户可以设置文本的各种效果,如加粗、斜体、设置颜色等。
MFC处理图形输出是通过设备上下文CDC类和图形对象CGdiObject类来完成的。
5.1.2 绘图工具GDI对象CGdiObjectCGdiObject是MFC提供绘图工具的类,它的派生类包括画笔(CPen)、画刷(CBrush)、字体(CFont)、位图(CBitmap)、调色板(CPalette)、区域(CRgn)等,它们的继承关系如图5-1所示。
VC++6简明教程图5-1 CGdiObject类的构成各个派生类的任务是:1.画笔(CPen)封装GDI画笔,用于绘制对象的边框以及直线和曲线。
Visual C++ 6.0实例教程电子教案第5章
2.添加鼠标响应函数 .
void CMoveTestView::OnLButtonDown(UINT nFlags, CPoint point) { if(flag= ="track") { struct pointstruct *temppoint; while(pointlisthead) { temppoint = pointlisthead; pointlisthead = pointlisthead->next; delete temppoint; } drawtrack=true; } CView::OnLButtonDown(nFlags, point); }
2. 添加位图
1. IDB_BIT1 2. IDB_BIT2
3. 添加数据类型及变量
class CMoveTestView : public CView { protected: // create from serialization only CMoveTestView(); DECLARE_DYNCREATE(CMoveTestView) private: CString flag; BOOL drawtrack; struct pointstruct{ CPoint point; struct pointstruct *next; }; struct pointstruct *pointlisthead,*pointlisttrail; …… }
CPaintDC dc(this); // device context for painting dc.MoveTo(10,10); dc.LineTo(100,100); dc.Ellipse(120,120,160,160);
CDialog::OnPaint(); } }
VC++6.0入门【第五章 图形和文本输出】
第5章图形和文本输出Windows使用图形设备接口(GDI)进行图形输出和文本输出,MFC封装了GDI对象,提供了CGdiObject类和CDC类支持图形输出和文本输出,本章你将学习使用CGdiObject类和CDC类在视图中输出各种图形和文本的方法和技巧。
5.1图形设备接口和CDC5.1.1图形设备接口(GDI)Windows操作系统通过图形设备接口,简称GDI (Graphics Device Interface),管理Windows程序的所有图形输出,包括显示在屏幕上的窗口,屏幕保护程序的运行,文档的打印。
GDI处理与不同输出设备的连接,从而应用程序开发者不需要去考虑基础硬件设备之间的不同。
应用程序可以使用GDI创建3种类型的图形输出:矢量图形、光栅图形和文本。
1.矢量图形矢量图形输出是指创建线和填充图形,包括点、直线、曲线、多边形、扇形和矩形。
2.光栅图形光栅图形输出是指光栅图形函数对以位图形式存储的数据进行操作,它包括各种位图和图标的输出。
在屏幕上表现为对若干行和列的像素操作,在打印机上则是若干行和列的点阵输出。
光栅图形是直接从内存到显存的拷贝操作,所以速度快,但是对内存要求高。
3.文本文本输出是GDI的另一项任务。
输出文本时文本的输出位置的计算不是以行为单位,而是以逻辑坐标为单位计算。
用户可以设置文本的各种效果,如加粗、斜体、设置颜色等。
MFC处理图形输出是通过设备上下文CDC类和图形对象CGdiObject类来完成的。
5.1.2 绘图工具GDI对象CGdiObjectCGdiObject是MFC提供绘图工具的类,它的派生类包括画笔(CPen)、画刷(CBrush)、字体(CFont)、位图(CBitmap)、调色板(CPalette)、区域(CRgn)等,它们的继承关系如图5-1所示。
图5-1 CGdiObject类的构成各个派生类的任务是:1.画笔(CPen)封装GDI画笔,用于绘制对象的边框以及直线和曲线。
VC++6.0PPT介绍
2011年3月28日星期一
面向对象技术与Visual C++编程
4
华东交通大学软件教研室
4.2.5 应用程序向导生成的其他文件
• • • • 项目文件 项目工作区文件 类向导文件 项目自述文件
2011年3月28日星期一
面向对象技术与Visual C++编程
5
华东交通大学软件教研室
4.3 ClassWizard类向导
2011年3月28日星期一
面向对象技术与Visual C++编程
10
华东交通大学软件教研室
多文档
1。多文档实例:5-1 2。SDI与MDI框架窗口的区别 3。文档模板(document template):文档、 视图、框架类和所涉及的资源形成了一种 固定的联系,这种联系就称为文档模板, 它是描述了相对应每一种类型文档的视图 和窗口的风格类型。 4。CMultiDocTemplate(……)
14
2011年3月28日星期一 面向对象技术与Visual C++编程 9
华东交通大学软件教研室
刷新视图时默认的函数调用过程
CDocument::UpdateAllViews( )---CView::OnUpdate( )---CWid::Invalidate( )----//使得整个窗口矩形无效, OnPaint( )---OnDraw( )。
4.3 应用程序向导生成的实现文件
• • • • • 框架窗口的实现文件(例4-3) 文档类实现文件 视图类实现文件(例4-4) 应用程序类实现文件 标准包含头文件
2011年3月28日星期一
面向对象技术与Visual C++编程
3
华东交通大学软件教研室
4.4 应用程序向导生成的资源文件
VB6.0实用教程_从入门到精通_试题
第一章 Visual Basic介绍第二章用户界面设计第三章编程的基础(含变量,常量,条件语句,循环语句,自定义变量,自定义过程,对象和类等基础)第四章 Windows 95的新控件Visual Basic的输入输出第五章 Visual Basic的鼠标事件和绘图第六章 Visual Basic的数据库、报表、预览、打印第七章从文件中存取资料第八章发行应用程序第九章使用Windows API和用Visual Basic建立自己的屏幕保护程序第十章创建ActiveX控件第十一章 ActiveX文档第十二章用对象链接与嵌入(OLE)扩展Visual Basic第十三章使用资源文件第十四章用Visual Basic建立ActiveX DLL第十五章用Winsock控件进行Internet通信第十六章 Web浏览控件第一章Visual Basic介绍§2 窗体和命令钮介绍一、窗体窗体是Windows的基本组成部分,这也是为什么这个操作系统叫Windows的原因。
它的主要属性除上面介绍的以外,还包括:1,Appearance属性这个属性用来决定控件是否采用三维效果。
2,BorderStyle属性这个属性决定了窗体的边框形式,共有6种属性值。
改变窗体的BordrStyle属性后,窗体在屏幕上没有变化,它只在运行时才变为你所要求的样子。
3,ControlBox属性程序员用来决定是否采用控制框的属性,仅在程序运行时才有效。
4,Font属性程序员可以改变该窗体上显示信息的字体,它控制着直接在窗体上打印的文本显示。
5,Icon属性这个属性是用户经常要使用的一种属性。
当用户的应用程序在工具条上最小化或在Windows桌面上变为一个独立应用程序时,该属性决定将采用何种图标,窗体控制框里的图标也由它决定。
为自己的窗体设置该属性时,要控制住自己挑三拣四的冲动。
6,Visible属性该属性决定窗体是否可见。
错误地改变其值是很危险的,窗体会从眼前消失,这种莫名其妙的事情会使用户惊惶失措,所以肩负重任的程序员一定要慎重哟!7,WindowState属性指定窗体在运行时的三种状态:正常、最小化、最大化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章图形和文本输出Windows使用图形设备接口(GDI)进行图形输出和文本输出,MFC封装了GDI对象,提供了CGdiObject类和CDC类支持图形输出和文本输出,本章你将学习使用CGdiObject类和CDC类在视图中输出各种图形和文本的方法和技巧。
5.1图形设备接口和CDC5.1.1图形设备接口(GDI)Windows操作系统通过图形设备接口,简称GDI (Graphics Device Interface),管理Windows程序的所有图形输出,包括显示在屏幕上的窗口,屏幕保护程序的运行,文档的打印。
GDI处理与不同输出设备的连接,从而应用程序开发者不需要去考虑基础硬件设备之间的不同。
应用程序可以使用GDI创建3种类型的图形输出:矢量图形、光栅图形和文本。
1.矢量图形矢量图形输出是指创建线和填充图形,包括点、直线、曲线、多边形、扇形和矩形。
2.光栅图形光栅图形输出是指光栅图形函数对以位图形式存储的数据进行操作,它包括各种位图和图标的输出。
在屏幕上表现为对若干行和列的像素操作,在打印机上则是若干行和列的点阵输出。
光栅图形是直接从内存到显存的拷贝操作,所以速度快,但是对内存要求高。
3.文本文本输出是GDI的另一项任务。
输出文本时文本的输出位置的计算不是以行为单位,而是以逻辑坐标为单位计算。
用户可以设置文本的各种效果,如加粗、斜体、设置颜色等。
MFC处理图形输出是通过设备上下文CDC类和图形对象CGdiObject类来完成的。
5.1.2 绘图工具GDI对象CGdiObjectCGdiObject是MFC提供绘图工具的类,它的派生类包括画笔(CPen)、画刷(CBrush)、字体(CFont)、位图(CBitmap)、调色板(CPalette)、区域(CRgn)等,它们的继承关系如图5-1所示。
图5-1 CGdiObject类的构成各个派生类的任务是:1.画笔(CPen)封装GDI画笔,用于绘制对象的边框以及直线和曲线。
默认画笔用于绘制与一个像素等宽的黑色实线。
2.画刷(CBrush)封装GDI画刷。
画刷是用来填充一个封闭的图形对象(如矩形,圆形)的内部区域。
默认的画刷颜色是白色。
3.字体(CFont)封装GDI字体对象,用户可以建立一种GDI字体,并使用CFont的成员函数来访问它。
主要影响文本输出的效果,包括文字的大小、是否加粗、是否斜体、是否加下划线等。
4.位图(CBitmap)封装GDI位图,提供成员函数装载和位图操作,位图可以用于填充区域。
5.调色板(CPalette)封装GDI调色板,保存系统可用的色彩信息,是应用程序和彩色输出设备上下文的接口。
6.区域(CRgn)封装GDI区域。
区域是窗口内的一块多边形或椭圆形区域。
CRgn用于设备上下文(通常是窗口)内的区域操作。
CRgn通常与CDC类中与裁剪(clipping)有关的成员函数配合使用。
5.1.3设备描述表(DC)设备上下文(Device Context),简称DC,是由GDI创建用来代表设备连接的数据结构。
DC的主要功能有:(1)允许应用程序使用一个输出设备。
(2)提供窗口应用程序,设备驱动,和输出设备之间的连接。
(3)保存当前信息,例如在一个窗口内绘图使用的颜色,画笔的宽度、画刷的类型等等。
(4)保存窗口剪取区域(clipping region),限制程序输出到输出设备中窗口覆盖的区域。
5.1.4设备上下文类(CDC)MFC封装了DC,提供CDC类及它的子类访问GDI,如图5-2所示,各类作用介绍如下。
图5-2 CDC及子类1.CDC类封装了所有图形输出函数,包含了一个DC的创建和初始化,及通用GDI对象的操作,包括画简单图形(如线、矩形、椭圆)和复杂的功能(如区域、位图、剪切区域)的操作。
CDC类的适应范围最广,不仅能支持窗口,还能支持打印机。
2.ClientDC类CClientDC又名客户区设备上下文,用于客户区的输出,一般在响应非窗口消息并对客户区绘图时要用到该类,例如在鼠标双击时要输出文本等。
3.CPaintDCCPaintDC用于响应窗口重绘消息(WM_PAINT)的绘图输出,不仅可对客户区进行操作,还可以对非客户区进行操作。
4.CWindowDCCWindowDC用于窗口客户区和非客户区(包括窗口边框、标题栏、控制按钮等)的绘制,除非要自己绘制窗口的边框和按钮,否则一般不用它。
5.CMetaFileDCCMetaFileDC专门用于图元文件的绘制。
图元文件记录一组GDI操作命令,可以通过这一组GDI 命令重建图形输出。
使用CMetaFileDC时,所有的图形输出命令会自动记录到一个与CMetaFileDC相关的图元文件中。
5.1.5 OnDraw函数当用AppWizard创建单文档或多文档应用程序时,视图类包含成员函数OnDraw()函数,CDC指针被传递给OnDraw()函数,下面的程序清单5-1显示了在视图窗口中输出一行文本的一个简单的OnDraw()函数。
程序清单5-1:用于输出的OnDraw()函数void CExam5View::OnDraw(CDC* pDC){CExam5Doc* pDoc = GetDocument();ASSERT_V ALID(pDoc);// TODO: add draw code for native data herepDC->TextOut(1,1,”hello world!”);}当视图窗口或窗口的一部分需要重绘时,系统会发给窗口一个WM_PAINT消息,MFC的窗口框架会将该消息映射到CWnd::OnPaint()函数,OnPaint()函数创建一个DC,并调用视图的OnDraw() 函数。
5.1.6 WM_PAINTWM_PAINT消息是最重要的绘图消息,它要求窗口重新绘制内容。
产生WM_PAINT消息的场合通常有:(1)窗口移动后及最大化,最小化后的刷新。
(2)被覆盖区域的刷新,如下拉菜单覆盖的区域。
(3)无效区域产生后的刷新,如执行滚动条操作,将一区域移动至不可见。
有时数据发生变化时,需要人为生成一个绘制消息,重绘窗口,可以调用几个CWnd的函数。
表5-1 产生绘制消息的函数5.1.7 获取设备上下文(DC)绘图前必须准备好设备上下文(DC),在一个MFC应用程序获得DC的常用方法有两种:一种是接受一个参数为指向CDC对象的指针,另一种是构造CClientDC对象。
一些消息处理函数可以通过参数接受指向CDC对象的指针,如OnDraw()函数。
程序清单5-2:用于输出一个黑点的OnDraw()函数void CExam5View::OnDraw(CDC* pDC){CExam5Doc* pDoc = GetDocument();ASSERT_V ALID(pDoc);// TODO: add draw code for native data here//在坐标为10,10的位置上画一点,颜色为黑色pDC->SetPixel(CPoint(10,10),RGB(0,0,0));}也可以使用CClientDC类创建一个局部DC对象,例如,在键盘响应消息处理函数和鼠标响应消息处理函数中要进行文本输出或图形绘制时,通常要创建一个这样的对象,并使用this指针为该对象赋值。
程序清单5-3:在鼠标点击画一红点的鼠标左键单击消息处理函数void CExam5View::OnLButtonDown(UNIT nFlags,CPoint point){// TODO: add draw code for native data hereCClientDC dc(this); //this 指针将CExam5View赋值给创建的dc对象dc.SetPixel(point,RGB(255,0,0));CView:: OnLButtonDown( nFlags,point);}5.1.8 编程实例【例5-1】编写一个单文档MFC(EXE)程序Exam5_1,在视图类增加成员变量,追踪鼠标左键双击的最新坐标,并输出坐标信息,运行效果如图5-3所示。
图5-3 实例Exam5_1运行效果1.使用AppWizard创建一个单文档MFC(EXE程序)2.为视图类增加成员变量记录坐标并初始化(1)选择WorkSpace的ClassView标签,右键单击CExam5_1View类。
在弹出的快捷菜单中选择AddMember Variable菜单项,增加CPoint类的公有成员变量m_LPoint。
(2)在CExam5_1View类的构造函数CExam5_1View()中,初始化变量m_LPoint为[0,0]。
如程序清单5-4所示。
程序清单5-4:CPoint类型对象引用CExam5_1View::CExam5_1View(){// TODO: add construction code herem_LPoint.x=0;m_LPoint.y=0;}3.在OnDraw()函数中添加代码,在第一行输出成员变量的值。
如程序清单5-5粗体部分所示。
程序清单5-5:在视图中输出整型数据的OnDraw()函数void CExam5_1View::OnDraw(CDC* pDC){CExam5_1Doc* pDoc = GetDocument();ASSERT_V ALID(pDoc);// TODO: add draw code for native data hereCString str;str.Format(“鼠标左键双击的位置是[%d,%d]”,m_LPoint.x,m_LPoint.y);pDC->TextOut(0,0,str);}4.在视图类增加鼠标左键双击的消息映射,修改成员变量,更新视图(1)打开ClassWizard,选择Message Map标签,Class Name列表中选择CExam5_1View,Object IDS列表中选择CExam5_1View,Messages列表中选择WM_LBUTTONDBLCLK,单击“Add Function”按钮,添加鼠标左键双击消息映射。
(2)单击“Edit Code”按钮,添加处理代码,用当前鼠标位置Point值替换m_LPoint的值,并设置无效区域,刷新视图。
程序清单5-6:产生重绘消息的鼠标消息处理函数void CExam5_1View:: OnLButtonDblClk(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultm_LPoint=point;Invalidate(TRUE);CView::OnLButtonDblClk(nFlags, point);}5.编译、链接、执行,可得到如图5-3所示的结果5.2 处理文本在窗口应用程序中经常使用GDI处理文本输出,文本的输出过程包括文本的属性设置、字体设置、文本格式化、调用文本输出函数输出文本等具体的过程,下面将分别讲述。