MFC 自动生成这几个类都是啥意思

1CAboutDlg//这个是关于对话框里面是构造和析构2CMainFrame//主框架`是在窗口生成之前准备工作全在这吗?3CTestApp//这个是什么`initln... 1CAboutDlg //这个是关于对话框 里面是构造和析构
2CMainFrame //主框架`是在窗口生成之前准备工作全在这吗 ?
3CTestApp//这个是什么`initlnstance()在这里也是初始化什么对象 ?
4CTestDoc//这是文档`是管理哪些文档`对初学者来说很少用呐 ?
5CTestView视图`这个常用 OnDraw我了解一些`我想知道`是不是默认就调用一次 ?
还有个问题啊`我想加个音乐`虽然加成功了`但是`我一直不明白加在哪个函数里`运行就有音乐 ?
看过孙鑫的教程后来忘了`各位高手各抒已见,互相学习
展开
 我来答
Frank7258
推荐于2016-10-03 · TA获得超过1503个赞
知道小有建树答主
回答量:381
采纳率:0%
帮助的人:534万
展开全部
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开始,在InitInstrance里面创建了MainFrame,这时候MainFrame的PreCreateWindow, OnCreate, OnCreateClient就会按照上述顺序被调用,在OnCreateClient中,视图类会被创建,视图类的PreCreateWindow和OnCreate会按上述顺序调用,当视图创建之后,视图类的OnInitialUpdate会被调用,作为视图类一次性的初始化。之后程序进入等待用户操作的状态,在需要刷新的时候,OnDraw会被调用。

在关闭应用程序的时候,用户单击窗口右上角的关闭按钮,Windows就发送WM_CLOSE给窗口,MFC中相应WM_CLOSE的函数是OnClose,在OnClose中,QueryEndSession被调用,如果文档有变化,则会询问用户是否要保存文档,如果保存,则调用文档类的Serilize函数对文档进行保存操作,如果不保存就继续关闭。这时候OnDestroy被调用,窗口在这里被销毁。
主进程App类会受到WM_QUIT消息,这是ExitInstrance被调用,最后整个程序被结束。

如果你想清楚了这个主线,你自己就可以决定你需要在哪里播放音乐了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式