天下

记录修行的印记

wtl学习笔记(2),WTL(ATL)中的全局变量

//WTL(ATL)中的全局变量
//文件:externs.cpp
CAtlAllocator g_Allocator;
static const bool g_bInitialized = Init();


//文件:atlbase.cpp
ATL::CAtlBaseModule  _AtlBaseModule;
ATL::CAtlWinModule   _AtlWinModule;
ATL::CAtlComModule  _AtlComModule;

//文件:atlapp.h,DEBUG版本中才有
WTL::ATL::CTraceCategory atlTraceUI(_T("atlTraceUI"));

//你自己的应用程序入口文件,文件中包括WinMain()函数
CAppModule _Module;



//文件:atlbase.h
extern "C" IMAGE_DOS_HEADER __ImageBase;
extern CAtlComModule _AtlComModule;
extern CAtlWinModule _AtlWinModule;
__declspec(selectany) CComModule
* _pModule = NULL;
//关键的构造函数,请注意成员变量:m_hInst及m_hInstResource,变量:__ImageBase
CAtlBaseModule::CAtlBaseModule() throw()
{
    cbSize 
= sizeof(_ATL_BASE_MODULE);
    m_hInst 
= m_hInstResource = reinterpret_cast<HINSTANCE>(&__ImageBase);
    dwAtlBuildVer 
= _ATL_VER;
    pguidVer 
= &GUID_ATLVer70;
    
if (FAILED(m_csResource.Init()))
    {
        ATLTRACE(atlTraceGeneral, 
0, _T("ERROR : Unable to initialize critical section in CAtlBaseModule\n"));
        ATLASSERT(
0);
        CAtlBaseModule::m_bInitFailed 
= true;
    }
}

//文件:crt0.c
__declspec(noinline) int __tmainCRTStartup(void)
{
#ifdef _WINMAIN_
    lpszCommandLine 
= _twincmdln();
    mainret 
= _tWinMain( (HINSTANCE)&__ImageBase, NULL,lpszCommandLine,StartupInfo.dwFlags & STARTF_USESHOWWINDOW? StartupInfo.wShowWindow : SW_SHOWDEFAULT );
#else
    _tinitenv 
= _tenviron;
    mainret 
= _tmain(__argc, _targv, _tenviron);
#endif
}

posted on 2011-12-05 12:32 天下 阅读(1002) 评论(0)  编辑 收藏 引用 所属分类: Win32WTL


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年12月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿(3)

随笔分类(369)

随笔档案(320)

链接

最新随笔

搜索

最新评论