打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MFC中五个初始类的作用

一个最基本的单文档视图的MFC程序,包含CxxApp、CxxDoc、CMainFrame、CxxView和CAboutDlg五个类。
  它们在程序开始运行时被创建的顺序是:CxxApp 、CxxDoc 、CMainFrame 、CxxView 、CAboutDlg

       C**App()定义了窗体加载之前需要做的预处理。比如一个加密的软件,打开后提示用户输入密码。这个事件的处理程序就要写在C**App()的InitInstance(中。                                      

    CMainFrame()包含了对工具栏、状态栏、窗口的定义。
    C**View包含了最主要的处理功能,如菜单操作、快捷键、用户交互操作等。
    CAboutDlg定义了ABOUT对话框。

    其中,前四个都是在程序主窗口出现之前被创建的,CAboutDlg是在“关于”对话框弹出时被创建的

1CAboutDlg   //这个是关于对话框 里面是构造和析构2CMainFrame //主框架`是在窗口生成之前准备工作全在这吗  ?3CTestApp//这个是什么`initlnstance()在这里也是初始化什么对象   ? 4CTestDoc//这是文档`是管理哪些文档`对初学者来说很少用呐       ?5CTestView视图`这个常用     OnDraw我了解一些`我想知道`是不是默认就调用一次 ? 还有个问题啊`我想加个音乐`虽然加成功了`但是`我一直不明白加在哪个函数里`运行就有音乐   ?看过孙鑫的教程后来忘了`各位高手各抒已见,互相学习
 
LZ需要系统地学习一下。
CTestApp是基于WinApp的,WinApp封装了程序的主入口WinMain,WinMain就和c语言的main函数地位一样,是Win32程序的入口。在MFC的封装中,一个程序启动,Windows调用WinMain,这个WinMain函数现在由MFC事先写好藏好了,你不能也不需要修改,在这个预定义的WinMain里面会调用CWinApp的InitInstrance函数。你仔细看你CTestApp::InitInstrance函数,在这里一个CMainFrame的对象被创建,文档模板被创建,主窗口通过ShowWindow(SW_SHOW)被显示出来。
 
CMainFrame是个框架,是你整个应用程序的主窗口,他负责管理应用程序的菜单,工具栏,状态栏等。中间的区域,成为客户区,由View类来管理,View类也是一个窗口,他是MainFrame的子窗口。OnDraw函数负责绘制客户区的内容,该函数会被多次调用,他可以被你自己调用,比如你调用View类的UpdateWindow,或者在Document类中调用UpdateAllViews等等,MFC自动会调用OnDraw。他还会被Windows调用,Windows在需要刷新窗口的时候发送给窗口WM_PAINT消息,MFC事先已经预定义了,在响应WM_PAINT消息的时候会调用OnDraw。何时Windows会发送WM_PAINT呢,比如窗口从最小化还原,比如窗口被用户改变了大小等等。这部分内容最好看看Windows GDI,Windows GDI是Windows操作系统整个可视化界面的基础。
 
然后你最后一个问题,何时才能被播放音乐。你仔细想想就容易得到答案了,整个程序从App类的InitInstrance开始,在InitInstranc
学过PE文件格式,你就明白,程序在进入WinMain之前要做很多事情,比如初始Dos头,分配函数表,初始化全局变量。之后才进入程序入口(WinMain)MFC对WindowsAPI进行了封装。在用向导编译成的二进时代码,MFC编译器链接器把源文件编译成PE文件格式存储在磁盘上。程序执行的时候,从PE文件头开始执行,在进入Winmain函数之前,进行一系列的必备的初始化。MFC对这一系列的过程进行了封装。提供给编程人员的第一个裸露程序入口就是CWinApp的InitInstance(),其实程序的入口依然是WinMain()函数。大家都知道,每个程序都有拥有一个进程,每个进程至少有一个线程就是主线程。CWinThread类是MFC用来封装线程的,这个主线程就是在WinMain函数中创建的,包括UI线程和工作者线程。因此每个MFC程序至少使用一个CWinThread派生类。被MFC程序员熟知的CWinApp应用类就从这里派生。InitInstance是CWinThread的一个虚函数,InitInstance就是“初始化实例”的意思,可见,它是在实例创建时首先被调用的。应用程序总要重载这个虚函数,进行系统设置,创建运行环境。例如,主窗口一定要在InitInstance()中创建,因为该函数退出后就进入该线程的消息循环。MFC执行流程。_tWinMain(WinMain的别名,用define替换的)-》AfxWinMain->初始化线程,调用InitInstance初始化窗口,调用Run函数进入消息循环。希望对你有用。
看看MSDN的解释:实际上windows允许一个程序同时运行多次,每一次都称为一个“实例”(instance)。在每一个实例开始的时候系统都会调用initinstance()这个函数进行初始化。


MFC中dodataexchange的作用:
将界面上的控件与一个变量或者一个类对象相关联!
数据交换

例如文本框控件 当关联了一个变量的时候 就需要在这个控件和这个变量之间通过DoDataExchange建立联系

然后通过调用UpdateData选择当用户更改了输入的时候 是否更新变量值
或更改程序变量值后是否更新界面


操作注意问题:.
1.调用UpdateData选择当用户更改了输入的时候 是否更新变量值
2.当在按钮中,引入另一个类时,必须在未设置按钮函数时候,就已经创建好将要引入的类,否则会造成无法读取要引入的类,!!!
我的理解是主函数的入口函数

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Windows编程之MFC窗口程序浅析
MFC基本介绍
技术资料-【剖析MFC六大关键技术之初始化过程】
MFC基于对话框基础程序解析
Visual C .NET编程讲座之二(3)
MFC-最简单的MFC程序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服