MFC 自动生成这几个类都是啥意思
1CAboutDlg//这个是关于对话框里面是构造和析构2CMainFrame//主框架`是在窗口生成之前准备工作全在这吗?3CTestApp//这个是什么`initln...
1CAboutDlg //这个是关于对话框 里面是构造和析构
2CMainFrame //主框架`是在窗口生成之前准备工作全在这吗 ?
3CTestApp//这个是什么`initlnstance()在这里也是初始化什么对象 ?
4CTestDoc//这是文档`是管理哪些文档`对初学者来说很少用呐 ?
5CTestView视图`这个常用 OnDraw我了解一些`我想知道`是不是默认就调用一次 ?
还有个问题啊`我想加个音乐`虽然加成功了`但是`我一直不明白加在哪个函数里`运行就有音乐 ?
看过孙鑫的教程后来忘了`各位高手各抒已见,互相学习 展开
2CMainFrame //主框架`是在窗口生成之前准备工作全在这吗 ?
3CTestApp//这个是什么`initlnstance()在这里也是初始化什么对象 ?
4CTestDoc//这是文档`是管理哪些文档`对初学者来说很少用呐 ?
5CTestView视图`这个常用 OnDraw我了解一些`我想知道`是不是默认就调用一次 ?
还有个问题啊`我想加个音乐`虽然加成功了`但是`我一直不明白加在哪个函数里`运行就有音乐 ?
看过孙鑫的教程后来忘了`各位高手各抒已见,互相学习 展开
1个回答
展开全部
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被调用,最后整个程序被结束。
如果你想清楚了这个主线,你自己就可以决定你需要在哪里播放音乐了。
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被调用,最后整个程序被结束。
如果你想清楚了这个主线,你自己就可以决定你需要在哪里播放音乐了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询