【vb精品源码栏目提醒】:网学会员鉴于大家对vb精品源码十分关注,论文会员在此为大家搜集整理了“【精品】VS2010-MFC编程入门 - 其它资料”一文,供大家参考学习
VS2010/MFC 编程入门之前言分类标签: 编程入门 VC++ VS2010 MFC鸡啄米的 C编程入门系列给大家讲了 C的编程入门知识,大家对 C语言在语法和设计思想上应该有了一定的了解了。
但是教程中讲的例子只是一个个简单的例程,并没有可视化窗口。
鸡啄米在这套 VS2010/MFC 编程入门教程中将会给大家讲解怎样使用 VS2010进行可视化编程,也就是基于窗口的程序。
C编程入门系列主要偏重于理论方面的知识,目的是让大家打好底子,练好内功,在使用VC编程时不至于丈二和尚摸不着头脑。
本套教程也会涉及到 VC的原理性的东西,同样更重视实用性,让大家学完本套教程以后,基本的界面程序都能很容易编写出来。
VC简介VC全称是 Visual C,是由微软提供的 C开发工具,它与 C的根本区别就在于,C是语言,而 VC是用 C语言编写程序的工具平台。
VC不仅是一个编译器更是一个集成开发环境,包括编辑器、调试器和编译器等,一般它包含在 Visual Studio 中。
VisualStudio 包含了
VB、VC、C等编译环境。
当然我们在使用 VC 6.0的时候为了轻便,总是只单独安装 VC 6.0。
但自微软2002年发布 Visual Studio.NET 以来,微软建立了在.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。
VC 6.0占用的系统资源比较少,打开工程、编译运行都比较快,所以赢得很多软件开发者的青睐。
但因为它先于 C标准推出,所以对 C标准的支持不太好。
举个例子:forint i0 ilt5 i ai i for 语句中声明的变量 i,对于 VC 6.0来说,出了 for 循环仍能使用。
但很显然这与 C标准对于变量生存期的规定不符合。
随着 VC版本的更新,对 C标准的支持越来越好,对各种技术的支持也越来越完善。
但同时新版本所需的资源也越来越多,对处理器和内存的要求越来越高。
到 VS2010,光安装文件就2G 多,安装后的文件占3G 多空间,其运行也经常受处理器和内存等性能的限制。
但鸡啄米还是推荐大家使用 VS2010,毕竟它是最新版本,类库和开发技术都是最完善的,本教程也将使用 VS2010为大家做例程的演示。
当然如果系统配置确实比较低,可以选择 VS2005,VS2005和 VS2010相比还是要轻量级一些的。
VC 6.0已经过时,奉劝大家尽量别用了。
VC与 MFC讲 VC免不了要提 MFC,MFC 全称 Microsoft Foundation Classes,也就是微软基础类库。
它是 VC的核心,是 C与 Windows API 的结合,很彻底的用 C封装了 Windows SDK(Software Development Kit,软件开发工具包)中的结构和功能,还提供了一个应用程序框架,此应用程序框架为软件开发者完成了一些例行化的工作,比如各种窗口、工具栏、菜单的生成和管理等,不需要开发者再去解决那些很复杂很乏味的难题,比如每个窗口都要使用 Windows API 注册、生成与管理。
这样就大大减少了软件开发者的工作量,提高了开发效率。
当然 VC不是只能够创建 MFC 应用程序,同样也能够进行 Windows SDK 编程,但是那样的话就舍弃了 VC的核心,放弃了 VC最强大的部分。
MFC 也不是只能用于 VC中,它同样也可以用在 Borland C等编译器中,当然没有几个人这样做。
本节旨在让大家对 VC、VS2010和 MFC 有基本的概念上的认识,后面鸡啄米会带大家进入 VS2010/MFC 的世界,让大家轻松的开发各种包含窗口、图形等的可视化程序。
VS2010/MFC 编程入门之二(利用 MFC 向导生成单文档应用程序框架)分类标签: 编程入门 VC++ MFC VS2010上一讲中讲了 VS2010和 MSDN 如何安装,相信大家都已经安装好了。
这一讲给大家一个简单的例子,演示如何生成单文档应用程序框架。
解决方案与工程鸡啄米在 VS2010的使用介绍中已经讲了解决方案与工程的概念,这里再重提一下。
每个应用程序都作为一个工程来处理,它包含了头文件、源文件和资源文件等,这些文件通过工程集中管理。
在 VS2010中,工程都是在解决方案管理之下的。
一个解决方案可以管理多个工程,可以把解决方案理解为多个有关系或者没有关系的工程的集合。
VS2010提供了一个 Solution Explorer 解决方案浏览器视图,可以显示当前解决方案的内容,当新建一个工程时可以选择新建一个解决方案还是加入当前解决方案。
下图左侧面板中正在显示的视图就是 Solution Explorer,视图中有一个解决方案-HelloWorld,此解决方案下有一个同名的工程-HelloWorld。
在应用程序向导生成应用程序后,VS2010会在用户设置的路径下,以解决方案名为名称建立一个目录,里面存放自动生成的文件。
使用 VS2010应用程序向导生成单文档应用程序框架鸡啄米这里简略演示下怎样生成单文档应用程序框架,让大家先有个直观的了解,有不理解的地方可以留着以后回来再看。
下面按照操作步骤一步步讲解:1.点菜单栏 File-gtNew-gtProject,弹出 New Project 对话框,我们可以选择工程类型。
如果安装完 VS2010以后第一启动时已经设置为 VC,则 Installed Templates-gtVisual C项会默认展开,而如果没有设置 VC,则可以展开到 Installed Templates-gtOther Languages-gtVisual C项。
因为我们要生成的是 MFC 程序,所以在“Visual C”下选择“MF ,C” 对话框中间区域会出现三个选项:MFC ActiveX Control、MFC Application 和 MFCDLL。
MFC ActiveX Control 用来生成 MFC ActiveX 控件程序。
MFC Application 用来生成 MFC 应用程序。
MFC DLL 用来生成 MFC 动态链接库程序。
当然我们要选择 MFC Application。
在对话框下部有 Name、Location 和 Solution name 三个设置项。
意义如下:Name--工程名,Location--解决方案路径,Solution name--解决方案名称。
这里 Name 我们设为“Hello ,World” Location 设置为“桌面”的路径,Solution name 默认和 Name 一样,当然可以修改 。
为其他名字,这里我们不作修改,也使用“HelloWorld” 点“OK”按钮。
2.这时会弹出“MFC Application Wizard”对话框,上部写有“Welcome to the MFC Appli ,cation Wizard” 下面显示了当前工程的默认设置。
第一条“Tabbed multiple document interface MDI”是说此工程是多文档应用程序。
如果这时直接点下面的“Finish”按钮,可生成具有上面列出设置的多文档程序。
但我们此例是要建立单文档应用程序,所以点“Next”按钮再继续设置吧。
,3.接下来弹出的对话框上部写有“Application Type” 当然是让选择应用程序类型,我们看到有四种类型:Single document(单文档) 、Dialog based 、Multiple documents(多文档)(基于对话框)和 Multiple top-level documents。
我们选择 Single document 类型,以生成一个单文档应用程序框架。
单文档应用程序运行时是一个单窗口界面。
此对话框的“Resource language”还提供语言的选择,这里默认选择英语。
“Project style”可选择工程风格,我们选择默认的“Visual Studio”风格。
“Use of MFC”有两个选项:UseMFC in a shared DLL(动态链接库方式使用 MFC)和 Use MFC in a static library(静态库方式使用 MFC)。
选择 Use MFC in a shared DLL 时 MFC 的类会以动态链接库的方式访问,所以我们的应用程序本身就会小些,但是发布应用程序时必须同时添加必要的动态链接库,以便在没有安装 VS2010的机子上能够正常运行程序。
选择 Use MFC in a static library 时 MFC 的类会编译到可执行文件中,所以应用程序的可执行文件要比上种方式大,但可以单独发布,不需另加包含 MFC 类的库。
这里我们使用默认的 Use MFC in a shared DLL。
点“Next”按钮。
4.此时弹出上部写有“Compound Document Support”的对话框,可以通过它向应用程序加 。
入 OLE 支持,指定 OLE 选项的复合文档类型。
本例不需要 OLE 特性,使用默认值“None”点“Next”按钮。
。
5.弹出的新对话框上部写有“Document Template Properties” “File extension”可以设置程序能处理的文件的扩展名。
对话框其他选项还可以更改程序窗口的标题。
我们都使用默认设置,点“Next”按钮。
。
6.此时弹出的对话框主题是“Database Support” 用于设置数据库选项。
此向导可以生成数据库应用程序需要的代码。
它有四个选项:None:忽略所有的数据库支持;Header files only:只包含定义了数据库类的头文件,但不生成对应特定表的数据库类或视图类;Database view without file support:创建对应指定表的一个数据库类和一个视图类,不附加标准文件支持;Database view with file support:创建对应指定表的一个数据库类和一个视图类,并附加标准文件支持。
,本例选择默认值“None” 不使用数据库特性。
点“Next”按钮。
,7.这时弹出的对话框是关于“User Interface Features” 即用户界面特性。
我们可以设置有无最大化按钮、最小化按钮、系统菜单和初始状态栏等。
还可以选择使用菜单栏和工具栏生成简单的应用程序还是使用 ribbon。
这里我们都选择默认设置。
点“Next”进入下一步。
8.此时弹出“高级特性”对话框。
可以设置的高级特性包括有无打印和打印预览等。
在“Number of files on recent file list”项可以设置在程序界面的文件菜单下面最近打开文件的个数。
我们仍使用默认值。
点“Next”按钮。
9.弹出“生成类”对话框。
在对话框上部的“生成类”列表框内,列出了将要生成的4 个类:一个视图类(CHelloWorldView)、一个应用类(CHelloWorldApp)、一个文档类(CHelloWorldDoc)和一个主框架窗口类(CMainFrame)。
在对话框下面的几个编辑框中,可以修改默认的类名、类的头文件名和源文件名。
对于视图类,还可以修改其基类名称,默认的基类是 CView,还有其他几个基类可以选择。
这里我们还是使用默认设置。
点“Finish”按钮。
应用程序向导最后为我们生成了应用程序框架,并在 Solution Explorer 中自动打开了解决 。
方案(见上面第一张图)编译运行生成的程序点菜单中的 Build-gtBuild HelloWorld 编译程序,然后点 Debug-gtStart Without Debugging(快捷键 CtrlF5)运行程序,也可以直接点 Debug-gtStart Without Debugging,这时会弹 ,出对话框提示是否编译,选择“Yes” VS2010将自动编译链接运行 HelloWorld 程序。
结果页面如下所示:终于看见界面了。
鸡啄米在以后的教程中会继续讲解各种界面和控件的使用方法。
欢迎到鸡啄米博客交流,您的关注是我前进的动力。
VS2010/MFC 编程入门之三(VS2010应用程序工程中文件的组成结构)分类标签: 编程入门 VC++ MFC VS2010鸡啄米在上一讲中为大家演示了如何利用应用程序向导创建单文档应用程序框架。
这一节将以上一讲中生成应用程序 HelloWorld 的文件结构为例,讲解 VS2010应用程序工程中文件的组成结构。
用应用程序向导生成框架程序后,我们可以在之前设置的 Location 下看到以解决方案名命名的文件夹,此文件夹中包含了几个文件和一个以工程名命名的子文件夹,这个子文件夹中又包含了若干个文件和一个 res 文件夹,创建工程时的选项不同,工程文件夹下的文件可能也会有所不同。
如果已经以 Debug 方式编译链接过程序,则会在解决方案文件夹下和工程子文件夹下各有一个名为“Debug”的文件夹,而如果是 Release 方式编译则会有名为“Release”的文件夹。
这两种编译方式将产生两种不同版本的可执行程序:Debug 版本和 Release 版本。
Debug版本的可执行文件中包含了用于调试的信息和代码,而 Release 版本则没有调试信息,不能进行调试,但可执行文件比较小。
鸡啄米将所有文件分为6个部分:解决方案相关文件、工程相关文件、应用程序头文件和源文件、资源文件、预编译头文件和编译链接生成文件。
1.解决方案相关文件解决方案相关文件包括解决方案文件夹下的.sdf 文件、.sln 文件、.suo 文件和 ipch 文件夹。
.sdf 文件和 ipch 目录一般占用空间比较大,几十兆甚至上百兆,与智能提示、错误提示、代码恢复和团队本地仓库等相关。
如果你觉得不需要则可以设置不生成它们,方法是点击菜单栏 Tools-gtOptions,弹出 Options 对话框,选择左侧面板中 Text Editor-gtC/C-gtAdvanced,右侧列表中第一项 Disable Database 由 False 改为 True 就可以了,最后关闭 VS2010再删除.sdf 文件和 ipch 目录以后就不会再产生了。
但关闭此选项以后也会有很多不便,例如写程序时的智能提示没有了。
.sln 文件和.suo 文件为 MFC 自动生成的解决方案文件,它包含当前解决方案中的工程信息,存储解决方案的设置。
2.工程相关文件工程相关文件包括工程文件夹下的.vcxproj 文件和.vcxproj.filters 文件。
它包含当前工程的设置和工程所包含的文件等信息。
.vcxproj 文件是 MFC 生成的工程文件, .vcxproj.filters 文件存放工程的虚拟目录信息,也就是在解决方案浏览器中的目录结构信息。
3.应用程序头文件和源文件应用程序向导会根据应用程序的类型(单文档、多文档或基于对话框的程序)自动生成一些头文件和源文件,这些文件是工程的主体部分,用于实现主框架、文档、视图等。
鸡啄米下面分别简单介绍下各个文件:HelloWorld.h:应用程序的主头文件。
主要包含由 CWinAppEx 类派生的 CHelloWorldApp类的声明,以及 CHelloWorldApp 类的全局对象 theApp 的声明。
HelloWorld.cpp:应用程序的主源文件。
主要包含 CHelloWorldApp 类的实现,CHelloWorldApp 类的全局对象 theApp 的定义等。
MainFrm.h 和 MainFrm.cpp:通过这两个文件从 CFrameWndEx 类派生出 CMainFrame 类,用于创建主框架、菜单栏、工具栏和状态栏等。
HelloWorldDoc.h 和 HelloWorldDoc.cpp:这两个文件从 CDocument 类派生出文档类 CHelloWorldDoc,包含一些用来初始化文档、串行化(保存和装入)文档和调试的成员函数。
HelloWorldView.h 和 HelloWorldView.cpp:它们从 CView 类派生出名为 CHelloWorldView的视图类,用来显示和打印文档数据,包含了一些绘图和用于调试的成员函数。
由ClassView.h 和 ClassView.cpp: CDockablePane 类派生出 CClassView 类,用于实现应用程序界面左侧面板上的 Class View。
FileView.h 和 FileView.cpp:由 CDockablePane 类派生出 CFileView 类,用于实现应用程序界面左侧面板上的 File View。
OutputWnd.h 和 OutputWnd.cpp:由 CDockablePane 类派生出 COutputWnd 类,用于实现应用程序界面下侧面板 Output。
PropertiesWnd.h 和 PropertiesWnd.cpp:由 CDockablePane 类派生出 CPropertiesWnd类,用于实现应用程序界面右侧面板 Properties。
ViewTree.h 和 ViewTree.cpp:由 CTreeCtrl 类派生出 CViewTree 类,用于实现出现在 ClassView 和 FileView 等中的树视图。
4.资源文件一般我们使用 MFC 生成窗口程序都会有对话框、图标、菜单等资源,应用程序向导会生成资源相关文件:res 目录、HelloWorld.rc 文件和 Resource.h 文件。
res 目录:工程文件夹下的 res 目录中含有应用程序默认图标、工具栏使用图标等图标文件。
HelloWorld.rc:包含默认菜单定义、字符串表和加速键表,指定了默认的 About 对话框和应用程序默认图标文件等。
Resource.h:含有各种资源的 ID 定义。
5.预编译头文件几乎所有的 MFC 程序的文件都要包含 afxwin.h 等文件,如果每次都编译一次则会大大减慢编译速度。
所以把常用的 MFC 头文件都放到了 stdafx.h 文件中,然后由 stdafx.cpp 包含 stdafx.h 文件,编译器对 stdafx.cpp 只编译一次,并生成编译之后的预编译头 HelloWorld.pch,大大提高了编译效率。
6.编译链接生成文件如果是 Debug 方式编译,则会在解决方案文件夹和工程文件夹下都生成 Debug 子文件夹,而如果是 Release 方式编译则生成 Release 子文件夹。
工程文件夹下的 Debug 或 Release 子文件夹中包含了编译链接时产生的中间文件,解决方案文件夹下的 Debug 或 Release 子文件夹中主要包含有应用程序的可执行文件。
关于应用程序工程文件的组成结构鸡啄米就先讲到这了。
其中包含了很多专有名词,以后大家会慢慢熟悉的。
欢迎来鸡啄米博客交流。
谢谢。
VS2010/MFC 编程入门之四(MFC 应用程序框架分析)分类标签: 编程入门 VC++ MFC VS2010上一讲鸡啄米讲的是 VS2010应用程序工程中文件的组成结构,可能大家对工程的运行原理还是很模糊,理不出头绪,毕竟跟 C编程入门系列中的例程差别太大。
这一节鸡啄米就为大家分析下 MFC 应用程序框架的运行流程。
一.SDK 应用程序与 MFC 应用程序运行过程的对比程序运行都要有入口函数,在之前的 C教程中都是 main 函数,而 Windows 应用程序的入口函数是 WinMain 函数,MFC 程序也是从 WinMain 函数开始的。
下面鸡啄米就给出用Windows SDK 写的“HelloWorld”程序,与应用程序框架进行对比,这样能更好的了解框架是怎样运行的。
Windows SDK 开发程序就是不使用 MFC 类库,直接用 Windows API 函数进行软件开发。
鸡啄米不是要讲解 SDK 开发,只是为了对比而简单介绍,至于 SDK 开发可以在大家学完 MFC 以后选择是否要研究,一般来说有简单了解就可以了。
SDK 应用程序首先,给出 Windows SDK 应用程序“HelloWorld”的
源码:C代码 1 include ltwindowsgt 2 3 int WINAPI WinMainHINSTANCE hInstance HINSTANCE hPrevInstance PSTR szCmdLine int iCmdShow 4 5 const static TCHAR appName TEXTquotHello worldquot 6 WNDCLASSEX myWin 7 myWin.cbSize sizeofmyWin 8 myWin.style CS_HREDRAW CS_VREDRAW 9 myWin.lpfnWndProc myWndProc 10 myWin.cbClsExtra 0 11 myWin.cbWndExtra 012 myWin.hInstance hInstance13 myWin.hIcon 014 myWin.hIconSm 015 myWin.hCursor 016 myWin.hbrBackground HBRUSHCOLOR_WINDOW 117 myWin.lpszMenuName 018 myWin.lpszClassName appName19 //Register20 if RegisterClassExampmyWin return 021 const HWND hWindow CreateWindow22 appName23 appName24 WS_OVERLAPPEDWINDOW25 CW_USEDEFAULT26 CW_USEDEFAULT27 CW_USEDEFAULT28 CW_USEDEFAULT29 030 031 hInstance32 033 ShowWindowhWindowiCmdShow34 UpdateWindowhWindow35 36 MSG msg37 whileGetMessageampmsg00038 39 TranslateMessageampmsg40 DispatchMessageampmsg41 42 return intmsg.wParam43 44 4546 LRESULT CALLBACK myWndProcHWND hWindow UINT msg WPARAM wParam LPARAM lParam 47 48 if msgWM_PAINT 49 50 PAINTSTRUCT ps 51 const HDC hDC BeginPainthWindowampps 52 RECT rect 53 GetClientRecthWindowamprect 54 DrawTexthDCTEXTquotHELLO WORLDquot-1amprect DT_SINGLELINE DT_CENTER DT_VCENTER 55 EndPainthWindowampps 56 return 0 57 58 else if msgWM_DESTROY 59 60 PostQuitMessage0 61 return 0 62 63 return DefWindowProchWindowmsgwParamlParam 64 上面的程序运行的流程是:进入 WinMain 函数-gt初始化 WNDCLASSEX,调用 RegisterClassEx 函数注册窗口类-gt调用 ShowWindow 和 UpdateWindow 函数显示并更新窗口-gt进入消息循环。
关于消息循环再简单说下,Windows 应用程序是消息驱动的,系统或用户让应用程序进行某项操作或完成某个任务时会发送消息,进.