WEB开发网
开发学院软件开发VC 初识WTL(上) 阅读

初识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。

Tags:初识 WTL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接