初识WTL(上)
2006-07-22 22:03:01 来源:WEB开发网核心提示: MDI(Multiple Document Interface)应用程序有一个主框架窗口,但有多个子框架窗口,初识WTL(上)(2),每个子窗口都有自己的视(View),和MFC的相似,Dialog应用程序是基于对话框的,入口函数其实就是主线程(_Module)的起始点,这和SDK,MFC
MDI(Multiple Document Interface)应用程序有一个主框架窗口,但有多个子框架窗口。每个子窗口都有自己的视(View),和MFC的相似。
Dialog应用程序是基于对话框的。
(3) Next
(4) 在产生的文件中可以看到WTL确实不支持Doc/View.
WTL对单界面线程的封装:WTL使用一个_Module全局变量来保存全局数据,并通过它来引用应用程序级的代码。在WTL中,该变量是CAppModule的实例,想象MFC的theApp。
●下面对MyTestWTL.cpp文件中的函数作一些说明:
Ⅰ:
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow)
{
HRESULT hRes = ::CoInitialize(NULL);
// If you are running on NT 4.0 or higher you can use the following call instead to
// make the EXE free threaded. This means that calls come in on a random RPC thread.
// HRESULT hRes = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
ATLASSERT(SUCCEEDED(hRes));
// this resolves ATL window thunking problem when Microsoft Layer for Unicode (MSLU) is used
::DefWindowProc(NULL, 0, 0, 0L);
AtlInitCommonControls(ICC_COOL_CLASSES | ICC_BAR_CLASSES); // add flags to support other controls
hRes = _Module.Init(NULL, hInstance);
ATLASSERT(SUCCEEDED(hRes));
int nRet = Run(lpstrCmdLine, nCmdShow); //程序逻辑,调用全局函数Run()
_Module.Term(); // 终止模块
::CoUninitialize();
return nRet;
}
入口函数名为_tWinMain()。当使用UNICODE时,编译器会将它替换为wWinMain(),否则,为WinMain()。入口函数其实就是主线程(_Module)的起始点,这和SDK,MFC一个道理。一个_Module还维持一个消息循环Map。
更多精彩
赞助商链接