首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC的库务必用AfxWinInit()显示的初始化吗

2013-07-08 
MFC的库必须用AfxWinInit()显示的初始化吗?我用VC2010建立一个控制台程序,勾选了支持MFC。发现自动生成的代

MFC的库必须用AfxWinInit()显示的初始化吗?
我用VC2010建立一个控制台程序,勾选了支持MFC。
发现自动生成的代码里面有:


// initialize MFC and print and error on failure
if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}

这里的所谓的初始化MFC指的是什么? 用MFC工程向导建立的3对话框工程或者单文档/多文档工程,并没有这样的函数调用啊? 还是说这个函数调用被MFC工程向导建立的工程给隐含了?

不调用这个函数又会如何呢?
[解决办法]
引用:
我发现把这个函数调用给注释掉也没有关系啊:


int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

HMODULE hModule = ::GetModuleHandle(NULL);
/*
if (hModule != NULL)
{
// initialize MFC and print and error on failure
if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
}
}
else
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: GetModuleHandle failed\n"));
nRetCode = 1;
}
*/
CString s=TEXT("abc");
MessageBox( NULL, s, s, MB_OK );
return nRetCode;
}


程序照样可以运行的。

那是因为LZ创建的是控制台程序,所以你把AfxWinInit注释掉是可以的,其相当于把你开始选择的的那个“勾选了支持MFC”的功能又去掉了。但是如果你当初选择创建的是MFC工程的话,你再删掉试试!看看能编译通过吗?

热点排行