轻松学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)打开窗⼝打开窗⼝有两种⽅法:选择“视图”菜单的各窗⼝名称打开窗⼝。
单文档与多文档解析
使用AppWizard创建 SDI和MDI界面的应 用程序的过程几乎完 全一样 主 要 差 别
在创建SDI界面的应用程序时,不生成 CChildFrame类,CMainFrame类的基类 为CFrameWnd
在创建MDI界面的应用程序时, CMainFrame类的基类为 CMDIFrameWnd
3
视图是文档的不同表现形式,一个*.html 语言的文件,在浏览器里和在记事本中打 开的表现形式是不同的但它们操作的是同 一个文件这就是一个文档对应两视图
Doc/View框架虽然可以调用成百上千个不 同的类,但是核心类只有五个: CWinApp CDocument CView CDocTemplate CFrameWnd
10
11.2.1 CWinApp 类
CWinApp类代表主程序,CWinApp本身是不可见的,它 负责维护进程的启动、终止、消息循环、命令行参数、 资源管理
视图把数据显示 于计算机屏幕上
视图通过相关联的文档类 的成员函数将经过修改的 数据传递给文档对象
文档对象获得修改过的数据之后,对 其进行必要的修改,最后保存到永久 介质(如磁盘文件)中
用户通过与视图的 交互来查看数据并 对数据进行修改
6
SDI文档/视图应用程序示意图
7
11.1.3 SDI程序中文档、视图对象的创建过程
成员 m_pszAppName M_lpCmdLine M_pMainWnd M_pszExeName M_pszProfileName M_pszRegistrKey LoadCursor LoadIcon 描述 应用程序名 命令行参数 应用程序主窗口指针 可执行文件名 配置INI文件名 配置注册表主键值 加载光标资源 加载图标资源
Visual C++MFC入门教程(经典版)
Visual C++MFC入门教程(经典版)visual-c++mfc入门教程(经典版)木有页眉visualc++mfc入门教程目录+--第一章vc入门|------1.1如何学好vc|------1.2认知windows消息机制|------1.3利用visualc++/mfc开发windows程序的优势|------1.4利用mfc进行开发的通用方法介绍|------1.5mfc中常用类,宏,函数介绍+--第二章图形输出|------2.1和gui有关的各种对象|------2.2在窗口中输入文字|------2.3使用点,刷子,笔进行绘图|------2.4在窗口中绘制设备有关图形,图标,设备毫无关系图形|------2.5采用各种态射方式|------2.6多边形和剪贴区域+--第三章文档视结构|------3.1文档视图框架窗口间的关系和消息传送规律|------3.2接收用户输入|------3.3使用菜单|------3.4文档,视,框架之间相互作用|------3.5利用序列化展开文件读取|------3.6mfc中所提供更多的各种视类了解+--第四章窗口控件|------4.1button|------4.2staticbox|------4.3editbox|------4.4scrollbar|------4.d利用appwizard创建并使用toolbarstatusbardialogbar|------4.egeneralwindow|------4.f关于wm_notify的采用方法+--第五章对话框|------5.1使用资源编辑器编辑对话框|------5.2创建有模式对话框|------5.3创建无模式对话框|------5.4在对话框中展开消息态射|------5.5在对话框中进行数据交换和数据检查1木有页眉|------5.6采用属性对话框|------5.7采用通用型对话框|------5.8建立以对话框为基础的应用|------5.9使用对话框作为子窗口+--第六章网络通信开发|------6.1winsock介绍|------6.2利用winsock展开并无相连接的通信+------6.3利用winsock创建存有相连接的通信《visualc++开发指南》闻怡洋/文第一章vc入门1.1如何努力学习vc这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。
mfc单文档例子
mfc单文档例子以下是一个简单的MFC单文档(SDI)应用程序的示例:1. 首先,创建一个新的MFC应用程序项目。
在Visual Studio中,选择“文件”菜单,然后选择“新建”->“项目”。
在“新建项目”对话框中,选择“MFC应用程序”,然后输入项目名称和位置,并单击“确定”。
2. 在“MFC应用程序向导”中,选择“单文档”作为应用程序类型,并单击“完成”按钮。
3. 在生成的代码中,找到`CMainFrame`类。
这是应用程序的主窗口类。
4. 在`CMainFrame`类的`OnCreateClient`函数中,添加以下代码:```cppvoid CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext pContext){// 创建视图窗口m_(_T("My View"), WS_CHILD WS_VISIBLE WS_BORDERWS_HSCROLL WS_VSCROLL, CRect(0, 0, 800, 600), this,ID_VIEW_WIN);}```5. 在`CMainFrame`类的`OnCreate`函数中,添加以下代码:```cppBOOL CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;// 创建工具栏和状态栏CToolBarCtrl tb;CRect rect(0, 0, 800, 24);(WS_CHILD WS_VISIBLE CBRS_TOP CBRS_GRIPPERCBRS_TOOLTIPS CBRS_FLYBY, rect, this, ID_VIEW_TB);m_(WS_CHILD WS_VISIBLE CBRS_TOP CBRS_GRIPPER CBRS_TOOLTIPS CBRS_FLYBY, rect, this, ID_VIEW_TB);m_(this);m_(0, ID_VIEW_STATUSBAR, SBPS_STRETCH, 0);m_(1, ID_VIEW_STATUSBAR2, SBPS_STRETCH, 0);m_(2, ID_VIEW_STATUSBAR3, SBPS_STRETCH, 0);m_(0, SBPS_NORMAL);m_(1, SBPS_NORMAL);m_(2, SBPS_NORMAL);m_(0, _T("Ready"));m_(1, _T("Ready"));m_(2, _T("Ready"));return TRUE;}```6. 编译并运行应用程序。
VS2020和MFC编程入门之2(利用MFC向导生成单文档应用程序框架)
VS2020/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)这里给大伙儿一个简单的例子,演示如何生成单文档应用程序框架。
解决方案与工程在VS2020的利用介绍中已经讲了解决方案与工程的概念,那个地址再重提一下。
每一个应用程序都作为一个工程来处置,它包括了头文件、源文件和资源文件等,这些文件通过工程集中治理。
在VS2020中,工程都是在解决方案治理之下的。
一个解决方案能够治理多个工程,能够把解决方案明白得为多个有关系或没有关系的工程的集合。
VS2020提供了一个Solution Explorer解决方案阅读器视图,能够显示当前解决方案的内容,当新建一个工程时能够选择新建一个解决方案仍是加入当前解决方案。
以下图左侧面板中正在显示的视图确实是Solution Explorer,视图中有一个解决方案-HelloWorld,此解决方案下有一个同名的工程-HelloWorld。
在应用程序向导生成应用程序后,VS2020会在用户设置的途径下,以解决方案名为名称成立一个目录,里面寄存自动生成的文件。
利用VS2020应用程序向导生成单文档应用程序框架那个地址简略演示下如何生成单文档应用程序框架,让大伙儿先有个直观的了解,有不睬解的地址能够留着以后回来再看。
下面依照操作步骤一步步讲解:1.点菜单栏File->New->Project,弹出New Project对话框,咱们能够选择工程类型。
若是安装完VS2020以后第一启动时已经设置为VC++,那么Installed Templates->Visual C++项会默许展开,而若是没有设置VC++,那么能够展开到Installed Templates->Other Languages->Visual C++项。
因为咱们要生成的是MFC程序,因此在“Visual C++”下选择“MFC”,对话框中间区域会显现三个选项:MFC ActiveX Control、MFC Application和MFC DLL。
Visual C++操作指南
Visual C++6.0操作指南Visual C++6.0强大的操作界面会令人眼花缭乱,但它同样强大的编程工具AppWizard (应用程序向导)的和Class wizard(类向导)使得编程变得非常简单,可视化(Visual)真正体现了面向对象的特征,很多人称之为点击编程,它使程序员的主要精力不是放在美化界面的设计上,而是致力于源代码本身。
这里介绍如何编写——个简单的应用程序,并介绍怎样在对话框窗口中增加一个命令按钮控制。
一、生成一个Hello应用程序生成一个只弹出一个窗口,但无任何实际应用的Hello应用程序。
操作步骤如下:1)进入Visual C++6.0的工作台,如图1所示。
图1 Visual C++6.0的工作界面2)从顶部“File”菜单中选“New”选项,出现一对话框,该窗口中有四个标签:File、Project、Workspace、Other Docments。
3)选择Project 标签,在该页左边的编辑框中选择MFC AppWizard(exe)项,即要用生成一个可执行文件。
4)在Project Name编辑框中输入要创建的工程文件的名字,在此命名为“Hello”。
5)在Location编辑框中选择存放该工程文件的路径和位置。
6)由于这是第一个工程文件,必须创建一个新的工作区,故“Create New Workspace ”选项必须选中。
7)在Platforms编辑框中选择win32。
表示我们使用的Visual C++ 6.0是在32位操作系统下运行的。
8)确定工程文件的类型、名称和路径选项后按OK按钮,就可以开始创建该工程文件了。
见图2所示。
图2 New 对话框下面将在Visual C++6.0 MFC APP Wizard的可视化指导下,根据自已的设计来生成应用程序的工程文件和应用程序的框架文件。
V isual C++6.0显示出—个MFC App Wizard-Step1的窗口,如图3所示。
基于Visual C++单文档多视图程序设计方法
u l + + 的类 向 导 不 提 供 谈 种 功 能 而 需 要 手 动 添 加 代 码 时 的 疑 难 问 题 , 在 Vi a c + 环 ac 使 s l+ u
境 中嫡制 单文档 多视 图的应 用程序得 0应手 。 关键词 : s a c Vi l ++ ; u 单文档 多视 图 ; C MF 中圈分类号 :P 97 T 3: 2 文献标识码: A 文章编号 : 0—2l(02O —o5一O 1 8 612o}l o 3 3 0
Ke r s ywod :Viu l s a + ;ig ed c me t/ l — iw ̄ F C+ sn l o u n mu t ve M C i
在开 发应用软 件 的 时候 发 现 , 多 时候需 要 的是 很 单 文档多 视图 的应 用 程 序 , V sa c + 的应 用 程 而 iu l +
寰 1 加^
m
I DC STATI C
_
1 示 例 程序 的功 能
本 示例程序 是一个 典 型的单文档 多 视 图程序 。在 DrwVi 视 图中按下 鼠标左键 处 画一 个封 闭 的椭 圆 a e w
或 者 一 个 封 闭 的矩 形 . 过相 关 的 菜 单命 令 切 换 到 通 F r e 视 图 中可 在 x与 Y 编辑 框 以及 S ae下 omVi w hp
收 稿 日期 } 0l 1— 0 Z0 一 0 9
.
作 者 简 介 t 力 (9 9 , . 江 16 一) 男 瑚南 束 阳 市人 , 洲工 学 院 讲 师 . 士 t 株 硕 主要从 事计 算 机 田 形 与 罔 象 处 理研 究
维普资讯
J n 2 0 a .0 2
基于Vs l ++ 单文档多视图程序设计方法 iaC u
VC++中MFC生成单文档程序详细过程
实验内容:
� � � 按前面所学的编码规范进行程序编写 将前面基于控制台的应用程序改为基本桌面的应用程序 可采用基于对话框的应用程序也可采用基于单文档的应用程序
图书管理系统参考界面
- 11 -
一. 快速建立 MFC 应用:
在VC6.0 的集成开发环境的“File”菜单下有“New”命令,用来建立各种新的内容。 选择“File”菜单下的“New”命令,弹出“New”对话框,如图1-1 所示。
-1-
哈尔滨工业大学软件学院
程序设计实践
图 1-1 项目建立窗口
1.选择应用程序界面的类型
在“MFC AppWizard – Step 1”对话框中,主要是选择应用程序界面的类型和应用程序 资源的语言种类,如图1-2 所示。
2.程序编辑管理界面
图 1-3 应用程序编辑窗口 程序说明,在MFC 应用程序的文档/视图结构 � CHelloApp:应用程序类 � CMainFrame:主框架窗口类 � CHelloDoc:文档类,文档类用来完成应用程序数据的存取工作。 � CHelloView:视图类, 视图类完成显示数据和与使用者交互的工作。s � CAboutDlg:版本信息对话框类 。 InitInstance()函数最后的工作就是显示和更新应用程序的窗口。 如果InitInstance() 函数中所有的初始化工作均正确地进行,函数将返回TRUE。在执行完初始化工作后,应用程 序将进入消息循环,接收和处理系统发送来的各种消息,直到应用程序被关闭。 ※ 详细信息请参考“VC++简明教程.PDF”文件中第29-39页。 下面是自动生成的程序运行界面。
如图 3-1 程序运行界面 2.获取编辑框中输入的内容 有两种方式获取文本,一种是通过定义变量的方式,另一种是直接使用命令。下面简单 说一下直接使用命令的方式。
MFC单文档窗体类的创建过程
MFC单文档窗体类的创建过程MFC(Microsoft Foundation Classes)是微软公司提供的一种面向对象的程序开发工具,用于简化Windows操作系统的应用程序开发。
MFC 提供了丰富的类库和框架,使开发人员能够更快速地创建Windows程序。
在MFC中,窗体类是常用的一种类,用于创建窗体应用程序。
本文将详细介绍MFC单文档窗体类的创建过程。
在MFC中,创建单文档窗体类的过程可以分为以下几个步骤:1.创建一个新的MFC应用程序项目首先,需要使用MFC应用程序向导创建一个新的MFC应用程序项目。
打开Visual Studio,选择“文件”->“新建”->“项目”,在“新建项目”对话框中选择“Visual C++”->“MFC”->“MFC应用程序”,并填写项目名称和保存路径,点击“确定”按钮。
接下来,按照向导的指引,选择“单文档”应用程序类型,并点击“完成”按钮。
2.添加对话框资源在MFC应用程序项目创建完成后,需要添加对话框资源。
在资源视图中,选择“添加”->“资源”->“对话框”,在弹出的对话框中输入对话框名称,并点击“确定”按钮。
此时,会自动生成一个对话框资源,可以在其中添加所需的控件。
3.创建窗体类在MFC应用程序项目中,会自动生成一个CWinApp类和一个CMainFrame类。
我们需要创建一个新的窗体类,用于承载对话框资源。
在Solution Explorer中,右击“源文件”->“添加”->“类”,在弹出的“添加类”对话框中选择“MFC”->“MFC类”->“单文档视图”,并填写类名称和保存路径,点击“添加”按钮。
此时,会自动生成一个新的窗体类,可以在其中添加处理逻辑。
4.修改窗体类代码打开新生成的窗体类的头文件和源文件,可以看到自动生成的代码。
在头文件中,需要包含所需的头文件,并声明成员变量和成员函数。
在源文件中,需要实现窗体类的构造函数、析构函数和其他成员函数。
Visual C++开发windows应用程序简介
Visual c++ 6.0使用简介一、功能窗口的介绍1.浏览项目工作区:项目工作区以窗口方式组织项目、文件和项目设置。
项目工作区窗口一般位于屏幕左侧,项目工作区窗口底部有一组标签,用于从不同的角度(视图)察看项目中包含的工程和联机文档。
项目工作区包含四种视图:FileView(文件视图):显示所创建的工程。
展开文件夹可以察看工程中所包含的文件。
ClassView(类视图):显示项目中定义的C++类,展开文件夹显示工程中所定义的所有类,展开类可察看类的数据成员和成员函数以及全局变量、函数和类型定义。
ResourceView(资源视图):显示项目中所包含的资源文件。
展开文件夹可显示所有的资源类型。
InfoView(文档视图):显示联机文档目录表。
展开目录表可以显示所有的帮助主题,双击主题将弹出InfoViewer Topic窗口,显示关于该主题的详细信息。
要显示关于源程序窗口的关键字的相关信息,可以将光标移动到该关键字上,然后按下F1键。
还可以使用InfoViewer显示来自Internet WWW(万维网)的页面。
单击项目工作区底部的标签可以从一个视图切换到另一个视图。
2.浏览AppWizard(应用程序向导):AppWizard是Visual C++提供的一个高级编程工具,它可以产生应用的C++源代码框架。
通过与另一个工具ClassWizard一起配合使用,可大大节省开发应用程序的时间和精力。
AppWizard是一个标准的C++源代码生成器。
它通过一系列的对话框来提示用户输入所需创建的程序的信息,如它的名字和位置。
用户还可以指定它是否具有一些特性,如多文档接口或工具条,对数据库、OLE的支持等。
然后AppWizard生成一些文件,这些文件构成程序的框架。
由AppWizard生成的程序是一个基本的Windows程序,用户可以编译并运行——它实际什么也不做。
它只是准备好增加那些为程序提供功能性的资源和代码。
单文档应用程序
单文档多文档1.CMainFrame类是MFC的CFrameWnd类的派生类,它主要负责创建标题栏、菜单栏、工具栏和状态栏。
AssertValid 诊断CMainFrame对象是否有效,调试用。
Dump 输出CMainFrame对象的状态信息,调试用。
Oncreate 创建工具栏和状态栏。
视图窗口是由基类Cframewnd的成员函数oncreate通过调用oncreateclient函数创建。
2. Doc文档是MFC的cdocument类的派生类,他主要负责应用程序数据的保存和装载,实现文档的序列化功能。
OnNewDocument 当用户执行File菜单中New命令时,MFC应用程序框架会调用此函数来完成新建文档的工作。
Serialize 负责文档数据的磁盘读写操作。
注意:由于单文档应用程序只处理一个文档对象,当执行New命令时,文档对象已经生成,因此文档类的构造函数不会再调用,所以不会在构造函数中进行文档对象成员变量的初始化,而应在OnNewDocument函数中。
在重载时首先需要调用基类CDocument的OnNewDocument函数。
3.View视图是负责客户区文档数据的显示,以及如何进行人机交互(从CDocument派生的类接受信息并向用户显示,同时用户的输入信息通过它向由CDocument派生的类传递)。
GetDoument 用于获取当前文档对象的指针OnDraw 虚函数,扶着文档对象的数据在用户视图区的显示输出。
4.WinMain函数5.Mfc应用程序运行机制调用CWinApp的构造函数-》程序入口函数winmain接受控制-》WinMain函数调用应用程序类的InitInstance函数-》WinMain函数今天消息循环-》程序终止。
《Visual C++程序设计教程》第六章属性单(CPropertySheet)
设置的非默认属性
Caption为“请输入半 径:”
Caption为“边框颜色:”
静态文本
静态文本
IDC_STATIC
IDC_STATIC
Caption为“红色(0255)”
Caption为“绿色(0255)”
边框 颜色 (填充 颜色)
静态文本
编辑框 编辑框 编辑框
IDC_STATIC
IDC_RED IDC_GREEN IDC_BLUE
6.2.2 创建CPropertyPage类
建立好属性页资源之后,就可以根据这个 对话框资源生成一个新类,可以利用MFC 的Class Wizard来实现.
通过“查看”→ “建立类向导...” 菜单命令,也可以使 用快捷键“Ctrl+W” 来打开类向导,但由 于添加的属性页对话 框资源并没有相应的 类,因此会弹出添加 类对话框,如图所示。
为了能在属性单中显示我们已经建立好的三个 属性页对话框,就需要使用属性单的成员函数 将属性页添加到属性单中,为了实现这一目的 1.在CProSheet类中引入3个属性页类的头文件: #include "DlgRadius.h" #include "DlgBorder.h" #include "DlgFill.h"
该类从对话框类派生,它的对象表示单个的 属性页。使用方法如同使用标准的对话框一 样,进行数据交换时,也是通过变量和属性 页控件进行数据交换来完成的。 该类实现了对属性页的封装,同时还提供一 些非常有用的成员函数和成员变量,通过这 些成员,可以很方便的操作和定制属性页的 各个特性。
(1)CPropertyPage方法 其原型为: CPropertyPage( ); CPropertyPage( UINT nIDTemplate, UINT nIDCaption = 0 ); CPropertyPage( LPCTSTR lpszTemplateName, UINT nIDCaption = 0 );
- 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程序框架及执行流程,文档/视图结 构是本章的重点也是难点内容。后面会在例子中进 一步对其进行接触。