创建一个单文档MFC应用程序的那些事儿

从大一注册博客到现在还没发表过一篇文章尴尬,趁着复习的机会整理一下所得,这次不要再半途而废了~奋斗

--------------------------------------------------------------------------我 是 一 条 安 静 的 分 割 线-------------------------------------------------------------------------------

第一次正常使用VS是学习图形学时,只需创建一个单文档MFC应用程序,步骤如下:

        文件—>新建建一个项目—>点击MFC、选择MFC应用程序->单个文档、MFC标准->完成(其他的选项皆为默认)

一、第一次用VS创建MFC工程时,首先面临的问题就是这三种项目都是啥?


MFC应用程序:生成的是一个.exe应用程序。

MFC ActiveX 控件:生成的是一个控件。

         ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COMDCOM)。

        在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(WindowsMacLinux)中任意运行的程序。这个组件就是ActiveX控件。ActiveXMicrosoft为抗衡Sun MicrosystemsJAVA技术而提出的,此控件的功能和java applet功能类似。

        ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。这个容器包括WEB网页,应用程序窗体等......

        ActiveX控件的后缀名是OCX或者DLL。一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cabexe解压成OCX和动态库共存的文件,然后注册ocx文件。

        基于MFCActiveX控件开发

                http://www.cnblogs.com/lidabo/archive/2012/12/04/2800921.html

MFC DLL生成一个动态链接库。

        DLL是一个包含可由多个程序,同时使用的代码和数据的库。例如,在 Windows 操作系统中,Comdlg32.dll 执行与对话框有关的常见函数。因此,每个程序都可以使用该 DLL 中包含的功能来实现打开对话框。这有助于避免代码重用和促进内存的有效使用。 通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。

        VS2010创建并使用DLL

                http://www.cnblogs.com/laogao/archive/2012/12/07/2806528.html

二、接下来的问题就是,这些又是些什么鬼?


应用程序类型:

        单个文档:

                “Single document”是单文档应用程序(SDI),这种程序在同一时刻只能打开一个文档,适合于做文件处理 

                生成的类:

                        CAboutDlg      //关于对话框(运行应用程序时右击窗体可打开此窗口,个人感觉没什么用,可点击向导左边“生成的类”取消生成)

                        CMainFrame    //主框架

                        程序名App         //应用程序类,很多需要初始化的东西直接在App的成员initInstance中编写

                        程序名Doc        //文档类,实现对数据的操作:保存读取修改

                        程序名View       //视图类,实现对视图的操作:显示,获取Doc类中的数据来显示视图;更改视图时,通知Doc类做更改

        多个文档

                “Multiple documents”是多文档应用程序(MDI),就是一个主窗体可以打开很多子窗体这种程序在同一时刻可以打开多个文档,每个文档显示在一个子窗口中,例如Word 97适合于做多文件处理

                生成的类:

                        CAboutDlg

                        CMainFrame

                        程序名App

                        程序名Doc

                        程序名View

                        CChildFrame//子框架

        基于对话框:

                “Dialog based”是基于对话框的应用程序,这种程序的主界面是一个对话框,通常用来完成一些比较简单的任务没有需要处理的文档,一般是工具软件的开发基础。适合于做交互界面

                生成的类:

                        CAboutDlg

                        程序名App

                        程序名Dlg//对话框,编写的基本都是一些与对话框相关的逻辑

        多个顶级文档:

                不了解,应该和多文档差不多吧,感觉没人用过的样子= =

                生成的类:

                        CAboutDlg

                        CMainFrame

                        程序名App

                        程序名Doc

                        程序名View

项目类型:选择窗体风格

MFC的使用:作为动态链接库还是静态链接库


三、点击下一步到复合文档支持


 应用程序必须支持文档/视图结构才能支持复合文档和文档模板。

复合文档支持:

选项

说明

指示不支持对象链接与嵌入 (OLE)。 默认情况下,应用程序向导创建不带 ActiveX 支持的应用程序。

容器

包含链接和嵌入对象。

袖珍服务器

指示应用程序可创建和管理复合文档对象。 注意:袖珍服务器不能独立运行并且仅支持嵌入项。

完全服务器

指示应用程序可创建和管理复合文档对象。 完全服务器能够独立运行,并且既支持链接项也支持嵌入项。

容器/完全服务器

指示应用程序可以既是容器又是服务器。 容器是可将嵌入项或者链接项并入自己的文档中的应用程序。 服务器是可创建供容器应用程序使用的自动化项的应用程序。

附加选项:

选项

说明

活动文档服务器

指示应用程序可以创建和管理活动文档。 如果选择此选项,必须在向导的文档模板字符串页的“文件扩展名”对话框中指定活动文档服务器的文件扩展名。 有关更多信息,请参见活动文档服务器

活动文档容器

指示应用程序可以在其框架中包含活动文档。 活动文档可以包含 Internet Explorer 文档或者 Office 文档(如 Microsoft Word 文件或者 Excel 电子表格)。 有关更多信息,请参见活动文档包容

支持复合文件

不使用复合文件格式序列化容器应用程序的文档。 此选项强制将包含对象的整个文件加载到内存中。 个别对象的增量保存不可用。 如果更改一个对象然后保存它,则文件中的所有对象都将保存。

转自:http://liuguofang523.blog.163.com/blog/static/5072170820117902723214/

四、数据库支持


选择为该程序添加何种级别的数据库支持. 

1.无:不涉及数据库操作。

2.仅头文件:程序要访问数据库,但不想从CFormView类来派生视类。 

3.不提供文件支持的数据库视图:程序要使用从CFormView类派生出来的视类,但不需要存取文档。

4.程序还要存取文档

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

不得不吐槽一句,这个编辑器真心不适应= =

猜你喜欢

转载自blog.csdn.net/baixue0729/article/details/50493135