看Atl头文件的疑惑~
atlcore.h中有这么一个声明,
extern CAtlBaseModule _AtlBaseModule;这个模块有应用程序的一些基本信息,是3.0中CComModule模块的分解类。
ATL源码都是头文件。所以、、这个CAtlBaseModule _AtlBaseModule的定义是在哪里、应该是在某个cpp中、
建立一个win32程序。包含ATL头文件
下面代码可以正常工作。
int WINAPI _tWinMain(__in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPWSTR lpCmdLine, __in int nShowCmd )
{
_AtlBaseModule.m_hInstResource = LoadLibrary( _T("shell32.dll") );
MSGBOXPARAMS mbp;
ZeroMemory( &mbp, sizeof( mbp ) );
mbp.cbSize = sizeof( mbp );
mbp.dwLanguageId = GetSystemDefaultLangID();
mbp.dwStyle = MB_USERICON;
mbp.hInstance = _AtlBaseModule.GetResourceInstance();
mbp.lpszCaption = _T("Hello");
mbp.lpszIcon = MAKEINTRESOURCE( 44 );
mbp.lpszText = _T("Hello, World!");
MessageBoxIndirect(&mbp);
FreeLibrary(_AtlBaseModule.m_hInstResource);
// MessageBox(NULL,_T("TEXT"),_T("HELLO"),MB_USERICON);
return 0;
}
_AtlBaseModule.m_hInstResource。。这里这个全局变量是在哪里定义的呢?直接就可以用了。我用vs直接查看定义。直接就跳到atlcore.h中的extern部分了。。求大大解答~
[解决办法]
atlbase.cpp