WTL学习之旅(一) 我的第一个WTL工程

原创 2012年03月27日 15:50:55

转载请标明是引用于 http://blog.csdn.net/chenyujing1234

 相关代码:

http://www.rayfile.com/zh-cn/files/f19ea46e-77e3-11e1-b980-0015c55db73d/

安装WTL请参考

http://blog.csdn.net/chenyujing1234/article/details/7399014

WTL环境优化:

修改AppWiz文件夹下setup90x.js 。把第152行 fileDest.WriteLine("Param=\"VC_EXPRESS = 1\""); 这句删除。

image

 

WTL向导认为如果是Express版本的VC一定是和psdk2003是的atl配合的,具体和atlthunk相关。如果不删除这句,用向导生成程序是运行不了的

然后在AppWiz\Files\Templates\1033文件夹找到stdafx.h 在32行添加#pragma comment(lib,”atlthunk.lib”)。这样用向导生成的程序就不会有链接错误了。

image

 

工程名为WTLTest。

选择Generate .cpp Files是为了产生cpp文件,这样更符合我们的习惯,不然只有.h文件产生.

调试过程后得知,WTL的调用如下:

1、_tWinMain入口

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_BAR_CLASSES); // add flags to support other controls

 hRes = _Module.Init(NULL, hInstance);  // 初始化  ATLASSERT(SUCCEEDED(hRes));

 int nRet = Run(lpstrCmdLine, nCmdShow);

 _Module.Term();                        // 结束  ::CoUninitialize();

 return nRet; }

2、采用ATL初始化模块.

CAppModule _Module;

_Module.Init(

// Overrides of CComModule::Init and Term
	HRESULT Init(ATL::_ATL_OBJMAP_ENTRY* pObjMap, HINSTANCE hInstance, const GUID* pLibID = NULL)
	{
		HRESULT hRet = CComModule::Init(pObjMap, hInstance, pLibID);
		if(FAILED(hRet))
			return hRet;

		m_dwMainThreadID = ::GetCurrentThreadId();
		typedef ATL::CSimpleMap<DWORD, CMessageLoop*>   _mapClass;
		m_pMsgLoopMap = NULL;
		ATLTRY(m_pMsgLoopMap = new _mapClass);
		if(m_pMsgLoopMap == NULL)
			return E_OUTOFMEMORY;
		m_pSettingChangeNotify = NULL;

		return hRet;
	}

 

结束时是_Module.Term(); 

	void Term()
	{
		TermSettingChangeNotify();
		delete m_pMsgLoopMap;
		CComModule::Term();
	}



3、创建ATL窗口

int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT)
{
	CMessageLoop theLoop;
	_Module.AddMessageLoop(&theLoop);

	CMainDlg dlgMain;

	if(dlgMain.Create(NULL) == NULL)
	{
		ATLTRACE(_T("Main dialog creation failed!\n"));
		return 0;
	}

	dlgMain.ShowWindow(nCmdShow);

	int nRet = theLoop.Run();

	_Module.RemoveMessageLoop();
	return nRet;
}


 

 

 

向VS2015添加WTL项目向导(ATL/WTL Application Wizard)

刚装了个VS2015社区版,微软地球良心企业啊~~Embarcader能学点不? VS装得再高端我也只会用个WTL,到目前为止(2015/08/09)WTL官网上还是只有WTL9.0版,最高支持到V...
  • waiting4you
  • waiting4you
  • 2015年08月09日 17:17
  • 3493

WTL在VC各版本下的安装

WTL在VC各版本下的安装 WTL各版本下载地址:http://sourceforge.net/projects/wtl/files/ WTL7.1+VC6.0 安装过程: 运行WTL71...
  • Kevin_Samuel
  • Kevin_Samuel
  • 2014年04月05日 14:47
  • 687

WTL-编译出错01--CVTRES : fatal error CVT1100: 资源重复。类型: MANIFEST,名称: 1,语言: 0x0409

编译信息 1>------ 已启动全部重新生成: 项目: PSheets, 配置: Debug Win32 ------ 1>生成启动时间为 2017/6/8 13:25:33。 1>_Prepare...
  • sakawa_x
  • sakawa_x
  • 2017年06月08日 13:31
  • 531

WTL学习之旅(三)WTL中 Thunk技术本质(含代码)

转载请标明是引用于 http://blog.csdn.net/chenyujing1234  例子代码:(编译工具:VS2005)  http://www.rayfile.com/zh-cn/...
  • chenyujing1234
  • chenyujing1234
  • 2012年04月09日 22:33
  • 4975

解决windows10, visual studio 2013里安装wtl9时遇到的脚本出错

按官方指导,运行AppWiz里面setup.js后,启动vs2013,选择wtl向导时,会出现如setDirection未定义等一系列错误,导致无法使用工程创建向导。主要原因是系统会阻拦跨域名调用js...
  • lzf_china
  • lzf_china
  • 2015年04月19日 11:28
  • 1056

在CodeBlocks中完美使用WTL进行开发

WTL 是 Windows Template Library 的缩写,WTL 功能不如MFC完善,但是比 MFC 更小巧,不依赖 MFC 的DLL。就是因为WTL可以编写出小巧的,不需要额外的DLL支...
  • u013414710
  • u013414710
  • 2016年10月27日 19:49
  • 1087

WTL中文版CHM格式

  • 2009年07月18日 10:07
  • 2.15MB
  • 下载

VS2010中添加WTL开发环境

首先,从官方网站下载最新版本(http://wtl.sourceforge.net/,最好是通过SVN),您也可以从这里下载本文撰写时的版本。 下载后,在(trunk\)WTL\Wizards\...
  • julius819
  • julius819
  • 2011年11月02日 15:11
  • 4668

安装WTL8.0过程以及WTL的安装包下载

 WTL的安装包下载 下载了WTL8.0,下面是安装过程1.解压WTL_80.exe到目录D:/Program Files2.打开cmd,进入D:/Program Files/WTL80/A...
  • okadler0518
  • okadler0518
  • 2009年05月08日 09:58
  • 1917

WTL

WTL简介 关键词: WTL                                           WTL是一个好东东.它开发的程序都非常短小精悍.对开发WIN3...
  • xlf13872135090
  • xlf13872135090
  • 2014年04月21日 14:36
  • 650
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WTL学习之旅(一) 我的第一个WTL工程
举报原因:
原因补充:

(最多只允许输入30个字)