轻松学VisualC之单文档应用程序
VS2010-MFC编程入门

VS2010/MFC编程入门之前言分类标签: 编程入门VC++VS2010MFC鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了。
但是教程中讲的例子只是一个个简单的例程,并没有可视化窗口。
鸡啄米在这套VS2010/MFC编程入门教程中将会给大家讲解怎样使用VS2010进行可视化编程,也就是基于窗口的程序。
C++编程入门系列主要偏重于理论方面的知识,目的是让大家打好底子,练好内功,在使用VC++编程时不至于丈二和尚摸不着头脑。
本套教程也会涉及到VC++的原理性的东西,同样更重视实用性,让大家学完本套教程以后,基本的界面程序都能很容易编写出来。
VC++简介VC++全称是Visual C++,是由微软提供的C++开发工具,它与C++的根本区别就在于,C ++是语言,而VC++是用C++语言编写程序的工具平台。
VC++不仅是一个编译器更是一个集成开发环境,包括编辑器、调试器和编译器等,一般它包含在Visual Studio中。
Visual Studio包含了VB、VC++、C#等编译环境。
当然我们在使用VC++ 6.0的时候为了轻便,总是只单独安装VC++ 6.0。
但自微软2002年发布Visual 以来,微软建立了在. NET框架上的代码托管机制,一个项目可以支持多种语言开发的组件,VC++同样被扩展为支持代码托管机制的开发环境,所以.NET Framework是必须的,也就不再有VC++的独立安装程序,不过可以在安装Visual Studio时只选择VC++进行安装。
VC++版本的选择:VS2010因为VC++ 6.0以后的版本不再有独立的安装程序,所以鸡啄米在教程中将不会称VC++ 6. 0以后的版本为VC++ 7.0等等,而是用VC++所属的Visual Studio的版本名称代替,比如VS2003。
近些年VC++主要的版本包括:VC++ 6.0、VS2003、VS2005、VS2008和VS2010。
建立一个简单地画直线的MFC单文档对话框并实现在对话框里面画直线

建立一个简单地画直线的MFC单文档对话框并实现在对话框里面画直线在MFC单文档应用程序中创建一个对话框窗口并实现在对话框内画直线的过程如下:1.创建MFC单文档应用程序- 在 Visual Studio 中创建一个新的 MFC 单文档应用程序项目。
选择"对话框"作为应用程序类型。
-设置应用程序名称和位置,然后单击"完成"创建项目。
2.设置对话框窗口- 在对话框中添加一个自定义控件。
选择"工具箱"中的"Picture Control"控件,拖动到对话框上。
- 选中图片控件,右键单击并选择"属性"。
更改 ID 为IDC_DRAW_AREA,并将 Border 属性设置为 None。
-拖动控件大小以适应窗口布局,并保存对话框。
3.修改对话框类- 打开对话框类的头文件(例如 CMyDialog.h),添加一个标志变量来跟踪鼠标左键按下的状态:```cppBOOL m_bDrawing;```- 在 CMyDialog.cpp 文件中添加以下消息映射函数:```cppBEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)ON_WM_LBUTTONDOWNON_WM_LBUTTONUPON_WM_MOUSEMOVEEND_MESSAGE_MAP```-在头文件中声明回调函数```cppafx_msg void OnLButtonDown(UINT nFlags, CPoint point);afx_msg void OnLButtonUp(UINT nFlags, CPoint point);afx_msg void OnMouseMove(UINT nFlags, CPoint point);```4.实现画线功能- 在 CMyDialog.cpp 文件中实现 OnLButtonDown 函数,该函数用于开始画线:```cppvoid CMyDialog::OnLButtonDown(UINT nFlags, CPoint point)m_bDrawing = TRUE;CClientDC dc(this);dc.MoveTo(point);}```- 实现 OnLButtonUp 函数,该函数用于结束画线:```cppvoid CMyDialog::OnLButtonUp(UINT nFlags, CPoint point) m_bDrawing = FALSE;}```- 实现 OnMouseMove 函数,该函数用于动态绘制线段:```cppvoid CMyDialog::OnMouseMove(UINT nFlags, CPoint point) if (m_bDrawing)CClientDC dc(this);dc.LineTo(point);}}5.更新对话框消息映射```cppafx_msg void OnPaint(;afx_msg BOOL OnEraseBkgnd(CDC* pDC);```6重写重绘和擦除背景函数- 在 CMyDialog.cpp 文件中添加以下代码来重绘对话框:```cppvoid CMyDialog::OnPaintCPaintDC dc(this); // 用于在对话框上绘制//TODO:在此处添加您的消息处理程序代码}```-添加以下代码来防止对话框背景擦除:```cppBOOL CMyDialog::OnEraseBkgnd(CDC* pDC)return TRUE;}7.运行程序-单击“开始调试”(F5)以运行应用程序。
使用Visual C++ .NET 使用GDI+的一般方法

使用Visual C++ .NET 使用GDI+的一般方法GDI(Graphics Device Interface)是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。
GDI+是GDI的一个新版本,步进在GDI的基础上添加了许多新的特性,而且对原有的GDI进行了优化。
下面就基于单文档的应用程序为例,说明使用GDI+的一般过程和方法。
说明:(1)范例程序目标:创建一个单文档应用程序,使用GDI+在其中绘制一个100*60的矩形,并对其进行着色。
(2)程序开发环境:Visual Studio 2012 (3)为了标识程序中添加的代码,添加的代码都用如下格式标出。
//------------此处为添加的代码---------------------------------------……….添加的代码//---------------------------------------------------程序创建步骤如下所示。
1.创建单文档的MFC程序1.1创建工程在File->New->Project中选择MFC Application,并命名为CEx_GDIPlus,如下图所示。
1.2工程属性配置在MFC Application的属性配置中选择单文档Single document,如下图所示。
其余属性保持默认即可。
2.在应用程序中配置GDI+2.1添加头文件gdiplus.h将头文件gdiplus.ht添加到程序中的stdafx.h文件中,如下图所示。
//------------此处为添加的代码---------------------------------------#include<GdiPlus.h>//引入GDI+头文件//------------------------------------------------------------------2.2添加类库gdiplus.lib类库gdiplus.lib的添加有两种方法。
VisualStudioC++2018-MFC编程入门.pdf

Visual Studio C++ 2010-MFC编程入门之前言鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了。
但是教程中讲的例子只是一个个简单的例程,并没有可视化窗口。
鸡啄米在这套VS2010/MFC编程入门教程中将会给大家讲解怎样使用VS2010进行可视化编程,也就是基于窗口的程序。
C++编程入门系列主要偏重于理论方面的知识,目的是让大家打好底子,练好内功,在使用VC++编程时不至于丈二和尚摸不着头脑。
本套教程也会涉及到VC++的原理性的东西,同样更重视实用性,让大家学完本套教程以后,基本的界面程序都能很容易编写出来。
VC++简介VC++全称是Visual C++,是由微软提供的C++开发工具,它与C++的根本区别就在于,C++是语言,而VC++是用C++语言编写程序的工具平台。
VC++不仅是一个编译器更是一个集成开发环境,包括编辑器、调试器和编译器等,一般它包含在Visual Studio中。
Visual Studio包含了VB、VC++、C#等编译环境。
当然我们在使用VC++ 6.0的时候为了轻便,总是只单独安装VC++ 6.0。
但自微软2002年发布Visual 以来,微软建立了在.NET框架上的代码托管机制,一个项目可以支持多种语言开发的组件,VC++同样被扩展为支持代码托管机制的开发环境,所以.NET Framework是必须的,也就不再有VC++的独立安装程序,不过可以在安装Visual Studio时只选择VC++进行安装。
VC++版本的选择:VS2010因为VC++ 6.0以后的版本不再有独立的安装程序,所以鸡啄米在教程中将不会称VC++ 6.0以后的版本为VC++ 7.0等等,而是用VC++所属的Visual Studio的版本名称代替,比如VS2003。
近些年VC++主要的版本包括:VC++ 6.0、VS2003、VS2005、VS2008和VS2010。
Visual C++文档数据显示代码

【例Ex_Array】读取文档数据并显示①用MFC AppWizard(exe)创建一个默认的单文档应用程序Ex_Array。
为CEx_ArrayDoc类添加CStringArray类型的成员变量m_strContents,用来读取文档内容。
②在CEx_ArrayDoc::Serialize函数中添加读取文档内容的代码:void CEx_ArrayDoc::Serialize(CArchive& ar){if (ar.IsStoring()){}else {CString str;m_strContents.RemoveAll();while (ar.ReadString(str)) {m_strContents.Add(str);}}}③在CEx_ArrayView::OnDraw中添加下列代码:void CEx_ArrayView::OnDraw(CDC* pDC){CEx_ArrayDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);int y = 0;CString str;for (int i=0;i<pDoc->m_strContents.GetSize(); i++) {str = pDoc->m_strContents.GetAt(i);pDC->TextOut( 0, y, str);y += 16;}}代码中,宏ASSERT_VALID是用来调用AssertValid函数,AssertValid的目的是启用“断言”机制来检验对象的正确性和合法性。
通过GetDocument函数可以在视图类中访问文档类的成员,TextOut是CDC类的一个成员函数,用于在视图指定位置处绘制文本内容。
④编译运行并测试,打开任意一个文本文件,结果如图13.2所示。
需要说明的是,该示例的功能还需要进行添加,例如显示的字体改变、行距的控制等,最主要的是不能在视图中通过滚动条来查看文档的全部内容。
Visual C 基础教程(郭文平)章 (8)

第8章 创建应用程序框架
(6) 在“MFC AppWizard–Step 4 of 6”对话框中可以设 置应用程序的界面特征。
· Docking toolbar:缺省设置,为应用程序添加一个 标准的工具栏,且添加相应的菜单命令来显示或隐藏工具栏。
· Initial status bar:缺省设置,为应用程序添加一 个标准的状态栏,且添加相应的菜单命令来显示或隐藏状态栏。
话框,如图8-1所示。
第8章 创建应用程序框架
选择项目类型
输入项目名 选择保存路径
图8-1 New对话框的“Projects”页面
第8章 创建应用程序框架
(2) 选定“Projects”标签,在左侧项目类型列表框中选择 项目类型“MFC AppWizard[exe]”。在“Project name”文本框 中输入项目名,本例为EX8_1。在“Location”文本框中输入保 存项目的路径和文件夹名,或单击右侧的“浏览”按钮,在打开 的对话框中选择保存项目的文件夹。向导将在该文件夹下建立一 个以项目名为名称的子文件夹,用于保存此项目的所有文件。设 置完成后,单击“OK”按钮,出现“MFC AppWizard-Step 1”对 话框,如图8-2所示。
· None:默认选项,应用程序不支持任何复合文档。 · Container:应用程序作为复合文档容器,可以嵌入 或链接复合文档对象。 · Mini-server:应用程序可以创建被其它应用程序嵌 入的对象。应用程序不能作为一个独立的程序运行,只能被其 它支持嵌入对象的程序启动。 · Full-server:应用程序可以创建被其它应用程序嵌 入或链接的对象,并能作为一个独立的程序运行。 · Both container and server:应用程序既可以作为 复合文档容器,又可以作为一个可单独运行的复合文档服务器。
Visual C++改变应用程序光标代码

【例Ex_Cursor】改变应用程序光标①用MFC AppWizard(exe)创建一个默认的单文档应用程序Ex_Cursor。
②按快捷键Ctrl+R,打开“插入资源”对话框,选择“Cursor”类型后,单击按钮。
在图像编辑器窗口的控制条上,单击“新建设备图像”按钮,从弹出的“新建设备图像”对话框中,单击按钮。
在弹出的“自定义图像”对话框中,保留默认的大小和颜色数,单击按钮。
回到“新建设备图像”对话框。
这样,“32 x 32, 16 颜色”设备类型就被添加上了,单击按钮。
③在图像编辑器的“设备”组合框中,选择“单色[32 x 32 ]”,打开“图像”(Image)菜单,选择“删除设备图像”(Delete Device Image)命令,这样,就删除“单色[32 x 32 ]”设备类型。
如果不这样做,加载后的光标不会采用“32 x 32, 16颜色”设备类型。
④保留默认ID号IDC_CURSOR1,用图像编辑器绘制光标图形,指定光标热点位置为(15, 15),结果如图12.6所示。
图12.6 创建的光标⑤为CMainFrame类添加一个成员变量m_hCursor,变量类型为光标句柄HCURSOR。
用MFC ClassWizard为CMainFrame类添加WM_SETCURSOR的消息映射函数,并增加下列代码:BOOL CMainFrame::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message){BOOL bRes = CFrameWnd::OnSetCursor(pWnd, nHitTest, message);if (nHitTest == HTCAPTION ) {m_hCursor = LoadCursorFromFile("c:\\windows\\cursors\\hand .ani");SetCursor(m_hCursor); bRes = TRUE;} else if (nHitTest == HTCLIENT ) {m_hCursor = AfxGetApp()->LoadCursor(IDC_CURSOR1);SetCursor(m_hCursor); bRes = TRUE;}return bRes;}⑥编译运行并测试。
创建一个简单的VisualBasic应用程序

创建⼀个简单的VisualBasic应⽤程序第1部分PART实验实验1创建⼀个简单的Visual Basic应⽤程序1.1 使⽤集成开发环境实验⽬的(1)熟练掌握Visual Basic的启动⽅法。
(2)熟悉Visual Basic的集成开发环境。
实验内容1.启动Visual Basic在Windows环境下,启动Visual Basic有两种⽅法。
(1)⽅法⼀选择“开始”菜单→“程序”菜单项→“Microsoft Visual Basic 6.0中⽂版”菜单项→“Microsoft Visual Basic 6.0中⽂版”菜单项,单击⿏标左键,启动Visual Basic,如图1-1所⽰。
图1-1 启动Visual Basic2(2)⽅法⼆打开“资源管理器”→找到..\Program Files\Microsoft Visual Studio\Visual Basic 98的Visual Basic 6.exe⽂件→双击该⽂件启动Visual Basic。
2.Visual Basic的集成开发环境Visual Basic的集成开发环境包括:标题栏、菜单栏、⼯具栏、控件箱和窗体。
启动Visual Basic后就会出现Visual Basic的启动界⾯,接着出现“新建⼯程”窗⼝,如图1-2所⽰,选择“标准EXE”图标,单击“打开”按钮,就新建⼀个“标准EXE”⼯程。
则出现了Visual Basic的集成开发环境,如图1-3所⽰,新建了⼀个空⽩的Form1窗体。
图1-2 新建⼯程界⾯图1-3 Visual Basic 的集成开发环境在集成开发环境中默认显⽰窗体设计器窗⼝、⼯程资源管理器窗⼝、属性窗⼝、代码窗⼝和窗体布局窗⼝5个窗⼝,这些窗⼝可以关闭、打开和移动改变位置。
(1)关闭窗⼝通过单击各窗⼝的图标来关闭。
实验1 创建⼀个简单的Visual Basic应⽤程序 3(2)打开窗⼝打开窗⼝有两种⽅法:选择“视图”菜单的各窗⼝名称打开窗⼝。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8章 单文档应用程序
单文档是一种常见的文件处理程序,如Windows自带 的记事本和画图程序等。相对于对话框简单的拖放 控件,单文档程序具有很强的文件读取显示功能。 单文档程序的核心是文档视图结构,文档用于读取 和保存数据。视图用于数据的显示和编辑。本章将 基于单文档应用程序对MFC框架进行剖析,探讨其 内部组织结构。
8中ClassView选项卡,可以看到系统为 我们生成的5个类,如图下图所示。其中,有2个类 和对话框程序中生成的是相同的。
关于对话框类 文档类
主框架类
主程序入口类 视图类
8.2.1 生成的类和资源
单击工作环境中的Resource选项卡,可以可视化编辑 和查看系统为我们生成的各种资源。单文档程序所 用的资源,如下图所示。
该类是一个文档类,是CDocument的派生类。 4.CFirstSingleView
该类是视图类,是CView的派生类。 5.CMainFrame
该类是一个框架类,派生于CFrameWnd类,表示应用程序的主 框架窗口。
8.2.3 MFC框架程序分析
本小节基于单文档应用程序,对一般的MFC框架程序的生命周 期进行分析,使读者对MFC框架程序的构成有整体的了解。
加速键资源 图标资源 字符串表 版本信息
对话框资源 菜单资源
工具栏
8.2.2 各类的详细信息
这一小节就上面出现的5个类进行详细介绍。 1.CAboutDlg
这是一个“关于”对话框类,该对话框用于显示软件的版本等 信息。 2.CFirstSingleApp
该类是主应用程序类,是CWinApp的派生类。主应用程序类的 封装用于Windows应用程序的初始化、运行和终止。 3.CFirstSingleDoc
8.1 创建一个单文档程序
下面,我们将利用MFC AppWizard来创建一个项目 名为FirstSingle的单文档应用程序,创建过程中间的 一些属性设置暂且不必理会。
8.2 单文档程序框架剖析
这一节我们基于单文档程序对MFC框架进行剖析, 使读者对MFC有进一步了解。MFC(Microsoft Foundation Classes)是一个微软公司提供的类库,是 一种应用程序框架。目前程序开发人员大都基于这 一框架进行Windows程序开发。
1.theApp全局对象 theApp对象标志着整个对象,每个MFC应用程序都有一个,而
且也仅有一个。 2.AfxWinMain()函数
当程序调用了CWinApp类的构造函数,使得theApp配置完成后, 接下来就进入了WinMain()函数。 3.InitInstance()函数
从AfxWinMain()代码可知,在AfxWinInit()之后的操作是 InitApplication()。AfxWinInit()会做一些内部初始化工作。 4.Run()函数
在运行Run()函数之前,系统已经完成了注册窗口类、创建窗 口、显示和更新窗口的工作,所以这时就应该进入消息循环了。
8.2.4 文档/视图框架
单文档程序除了有主框架窗口以外(CMainFrame), 还有一个窗口是是视图窗口(CView)。主框架窗口 是视图窗口的一个父窗口。主框架窗口就是整个应 用程序外框所包括的部分,而视图类窗口只是主框 架窗口中空白的地方,如下图所示。
主框架窗口
视图窗口
8.3 显示键盘字符例子
下面,我们来编写一个简单的获得键盘字符并通过 视类显示的小例子。通过这个小例子,让读者对文 档和视图有一定的感性理解。
8.4 小结
本章主要介绍了单文档应用程序的创建、生成的类、 各类的详细信息、MFC程序的框架以及文档/视图结 构,最后通过一个小例子简要展示了文档类和视图 类的关系。MFC程序框架及执行流程,文档/视图结 构是本章的重点也是难点内容。后面会在例子中进 一步对其进行接触。