MFC 应用程序的总体结构通常由 由开发人冲塌员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。MFC 提供了MFC AppWizard 自动生成框架。
Windows 应用程序中,MFC 的主包含文件为"Afxwin.h"。
此外MFC的部分类为MFC/ATL 通用,可以在Win32 应用程序中单独包含并使用这些类。
由于它的易用性,初学者常误认为VC++开发必须使用MFC。这种想法是错误的。作为Application Framework,MFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32 程序设计。
MFC,微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是WinDOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包,MFC作为与VC++血肉相连的部分(注意C++和VC++的区别:C++是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而VC++只是一个编译器,或者说是一种编译器+源程序编辑器的IDE,WS,PlatForm,这跟Pascal和Delphi的关系一个道理,Pascal是Delphi的语言基础,Delphi使用Pascal规范来进行Win下应用程序的开发和编译,却不同于Basic语言和VB的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范,VB新加的Basic语言要素,如面向对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言),MFC同BC++集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC++专配的..
MFC是Win API与C++的结合,API,即微软提供的WinDOS下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方(如我是一方,微软是一方,Borland就是第三方)的编程语言来进行对WinDOS下应用程序的开发,使这些被开发出来的应用程序能在WinDOS下运行,比如VB,VC++,Java,Dehpi编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在WinOS的消息机制和绘图里,遵守WinDOS作为一个 *** 作系统的内部实现,这其实也是一种必要,微软如果不提供API,这个世上对Win编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾,上面说到MFC是枣判蔽微软对API函数的专用C++封装,这种结合一方面让用户使用微软的专业C++ SDK来进行Win下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多程序开发人员在Win下用C++ &MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价(这是微软的一向作风),因此就造成了MFC对类封装中的一定程度的的冗余和迂回,但这是可以接受的.最后要明白MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在WinDOS(用MFC编写的程序绝大部分都在WinDOS中运行)中实现内部处凳州理的类,如数据库的管理类等,学习中最应花费时间的是消息和设备环境,对C++和MFC的学习中最难的部分是指针,C++面向对像程序设计的其它部分,如数据类型,流程控制都不难,建议学习数据结构C++版.MFC是微软封装了的API。什么意思呢?windows作为一个提供功能强大的应用程序接口编程的 *** 作系统,的确方便了许多程序员,传统的win32开发(直接使用windows的接口函数API)对于程序员来说非常的困难,因为,API函数实在太多了,而且名称很乱,从零构架一个窗口动辄就是上百行的代码。MFC是面向对象程序设计与Application framework的完美结合,他将传统的API进行了分类封装,并且为你创建了程序的一般框架,
为什么我编译的MFC应用程序在其他电脑上不能运行?因为其他的电脑上没有相关的运行库,因此无法运行。 但可以这样解决,打开工程或项目的属性,在常规选项卡中设置:使用MFC作为静态链接库(不同版本的描述不尽相同,但都有静态两个字),设置后再编译就可以了。
如何在其他电脑上运行VS2005编译的DEBUG版应用程序首先,通过菜单找到关于选项查询当前VS2005的版本,然后到自己电脑"$(Windows)/WinSxS/"目录下可碧指桥以看到很多长长 名字的目录。第一个"_"前为平台,这里以x86为例,接下来找到带有"Microsoft.VC80.DebugCRT" 和"Microsoft.VC80.DebugMFC"字样的且包含上面版本号的目录。我的电脑目录如下:
x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4
将这两个目录拷贝到目标电脑的"$(Windows)/WinSxS/"位置,进入"$(Windows)/WinSxS/Manifests/"目录,用上面的方法找到四个文件并拷悔猛贝到目标电脑的相同目录中,我的电脑文件如下:
x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f.cat以及.manifest文件
x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4.cat以及.manifest文件
最后一步,进入"$(Windows)/WinSxS/Policies/"目录,找到带有"Microsoft.VC80.DebugCRT"和"Microsoft.VC80.DebugMFC"字样的两个目录将其拷贝到目标电脑的相同目录,我的电脑目录如下:
x86_policy.8.0.Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_x-ww_09e017b4
x86_policy.8.0.Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_x-ww_a193936f
到 此,所有需要的文件都拷贝结束了,运行刚刚的应用程序,显示了我们熟悉的错误信息:"This application has failed to start because XXX.dll was not found. Re-installing the application may fix this problem."
编写好的C程序如何才能变成EXE应用程序在其他不装有C编译系统的电脑上运行?逗闹这个要看你是用什么样的编译器
Win-TC\projects的话 里头有编译好的 exe文件,不过复制出来以后就运行不了。因为TC是16位的,而WINDOWS是32位的
要是用vc6.0那就简单多了。
在“工程”->“设置”中的“常规”选项卡,
Microsoft基础类:
选择“使用MFC作为静态链接库”。
这样生成的EXE文件可以在没有安装VC++的电脑上运行了。
生成的EXE文件在Debug或者Release文件夹下。
其他的编译器我不清楚
VC编译的Win32应用程序不能在Windows 7运行,win32应用程序是什么,为什么叫Win32有点莫名其妙Windows 32位应用程序。
你一定用了什么非开放的API接口,所以不能用。
电脑C盘里的应用程序能不能防在其他盘里运行啊可以,但你得修改路径,注册表,非常麻烦,如果是单个的程序,你可以找到启动的图标然后发送到桌面.系统程序一般还是不要乱动,别把除了系统程序之外的程序或软件给C盘安装,很容易感染C盘中毒的
在VS2005中用VC#编译的程序为什么在其他机器运行不了?
编好后当然不能就直接用了,要对程序进行打包:创建项目→项目类型→其他类型→安装和部署→安装向导。
为什么Qt编译的程序不能在XP上运行使用qt5.7以下的版本,在xp下依赖库和其他 *** 作系统不同,好像有个windows.dll
MFC生成的exe程序不能在其他电脑上运行怎么办depend。exe 查一查你的程序依赖那些dll copy过去,否则请 静态 + release 重新编译
在其他店(电脑城里的)下载应用程序后 为什么无法从电脑itunes上下载应用程序到iphone首先,你需要注册账户(详细教程::hi.baidu./wongstephanie/blog/item/4d57da14168f4bd9c3fd78bc.)
然后对电脑进行授权(打开iTunes,点击“Store”—“对这台电脑授权”)才能安装应用程序;
其次,登录以后你点击应用程序购买然后下载安装就好了;
最后,当你使用自己的电脑的iTunes库同步时,你的iphone内原有的程序也会被抹掉的。
怎么我用c++ builder6.0编的一个小程序在其他电脑上不能运行在程序编译的时候,你需要把程序用到东西都打包到EXE文件中,如下 *** 作:
在Options 中,把Packages--build with runtime packages前的勾去掉
把linker-- use dynamic rtl前的勾去掉
另外,如果你用了数据库功能,那么,你必须把数据库支撑文件放到运行程序的电脑中,因为数据库支撑包不能与EXE文件一起封装
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)