MFC项目源文件 15

在新建一个MFC项目后(如对话框),会产生很多源文件,请问这些源文件是怎样联系起来的?哪个是主要的源文件呢?他们之间的关系怎样?弄明白了,对于类似对话框的MFC项目,主要... 在新建一个MFC项目后(如对话框),会产生很多源文件,请问这些源文件是怎样联系起来的?哪个是主要的源文件呢?他们之间的关系怎样?
弄明白了,对于类似对话框的MFC项目,主要的源文件是DLG.CPP这一类,它相当于一个黑盒子,遇到函数时会调用其它的CPP源文件
展开
 我来答
qiujiejia
2014-05-14 · TA获得超过499个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:248万
展开全部



听你这么说。我假定你已经学习了c++ 和 win32 (至少看过win32 的 hello word 示例程序)


一个简单程序简化为 如下:

窗口函数
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
....
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)


创建注册窗口


MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam ;
}  


工程名.cpp 工程名.h 是一个 CWinApp 的派生类 。这2个文件执行的就是以下这些代码 :

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)



MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam ;
}  

工程名Dlg.cpp 工程名Dlg.h 这2个文件创建一个窗口 。执行的代码是:


窗口函数
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
....
}

创建注册窗口


这只是粗略说说,至于细说,一言难尽。哎!太复杂了。我学习了很久才懂个大概。mfc真是难于理解。

下面我再贴一个mfc的简单例子。相比对话框例子。我觉得这能更好的理解mfc 。


//下面这个程序是在Win32工程里模拟MFC程序初始化并创建窗口的简单过程(当然,它只是模拟,意在理解MFC创建程序机制,其中是有漏洞的)
//1.创建一个Win32 Application工程-->新建一个C++ Source File-->复制并粘贴代码
//2.Alt+F7调出设置对话框-->在Microsoft基础类-->选择"使用MFC作为静态链接库"
//3.运行

#include"afxwin.h"

//窗口基类,用来最为程序的主窗口,当然也可继承于CFrameWnd类
class CMyWnd:public CWnd 

public:
CMyWnd() //窗口类的构造函数
{
    CreateEx(NULL,AfxRegisterWndClass(NULL),"MyWindow",WS_VISIBLE|WS_OVERLAPPEDWINDOW,100,100,200,200,NULL,NULL,NULL);
}
}; 

//继承一个CWinApp类,用于构建程序实例
class CMyApp:public CWinApp
{
public: 
BOOL InitInstance() //InitInstance()是虚函数,我们需要重载它并在里面添加我们初始化代码(如创建主窗口)
{
    //m_pMainWnd是CWinThread里的一个数据成员,用来创建主窗口(选中"m_pMainWnd"->右键->转到"m_pMainWnd"的定义)
    m_pMainWnd=new CMyWnd(); 
//    m_pMainWnd->ShowWindow(m_nCmdShow);    //CreateEx里有WS_VISIBLE,所以可以省略显示窗口函数

    //你的代码 

    return true; 
}
}; 

//创建一个程序实例
CMyApp TheApp; 

//运行的顺序是:
//1    创建TheApp对象
//2    TheApp调用成员函数InitInstance()
//3    在InitInstance()里用成员变量m_pMainWnd创建窗口类(m_pMainWnd=new CMyWnd();)
//4    m_pMainWnd调用构造函数CMyWnd()
//5    在CMyWnd()调用成员函数创建窗口

//你可以在你创建的单文档和对话框程序里面看见这些代码的踪影,用调试的方法加以追踪,加深理解
谁给我改的名H
2014-05-13 · 超过55用户采纳过TA的回答
知道小有建树答主
回答量:122
采纳率:75%
帮助的人:81.3万
展开全部
建议看看孙鑫老师的视频,会让楼主茅塞顿开。windows系统暂时不用了,要不看看生成的文件或许会给楼主点提示,不过还是建议楼主看孙鑫老师的视频,楼主如若有一丁点后悔,回来扁我行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzliuying
2014-05-13
知道答主
回答量:15
采纳率:0%
帮助的人:3.6万
展开全部
建议看看孙鑫的VC++深入详解,第三章,讲的很详细。这不是一两句说得清的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式