在win32项目中用向导添加MFC类

来源:互联网 发布:网络事件营销是炒作吗 编辑:程序博客网 时间:2024/06/05 14:09
1.项目中必须包含一个stdafx.h并且其中一定要有
#include <afxwin.h>
2.经过上一步后,就可以添加MFC类了,但每回添加MFC类的时候VS会说
default.htm PopulateUnusedDialogIDs() 中的错误:
无法访问资源信息。请检查 .rc文件是否在另一个编辑器中打开。
只要为这个项目添加一个"项目名.rc"文件(点菜单中的"项目"->"添加资源",然后取消出现的对话框就可以了)
3.还有生成的新类的构造函数和析构函数默认都是protected的,得手工把它改成public的
4.最后在编译的时候还会出现:
fatal error C1189: #error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
修改项目属性中的"常规"->"MFC的使用"或"C/C++"->"代码生成"->"运行时库"
5.设置预编译头文件(这一步可以略过,但可能在编译的时候会比较慢)
再添加一个stdafx.cpp(文件名可以随便,但一定要是cpp的),在里面只写
#include "stdafx.h"
然后设置文件的属性(only .cpp)的"预编译头"->"创建/使用预编译头",除了stdafx.cpp设置成"创建预编译头(/Yc)",其它的都设置成"使用预编译头(/Yu)".当设置这两项的时候VS为我们设置了默认的预编译头文件(即:"通过文件创建/使用 pch"和"预编译头文件")
再有就是在每个包含stdafx.h文件一定要把#include "stdafx.h"放到第一行
(有关预编译头文件的详细说明可以自己google一下,很详细的:)
然后编译通过,就可以在win32项目中用向导添加MFC类了
但是要想调用dlg资源必须加上

 int nRetCode = 0;

 // 初始化 MFC 并在失败时显示错误
 if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
 {
  // TODO: 更改错误代码以符合您的需要
  _tprintf(_T("错误: MFC 初始化失败\n"));
  nRetCode = 1;
 }
 else
 {
  // TODO: 在此处为应用程序的行为编写代码。
 }

这段 (自己摸索结果)
原创粉丝点击