WTL的安装和使用

WTL全称为Window Template Library,一个构架于ATL之上的C++类库,它包装了大多数的窗口控制.从网上看的,也只是个大概的了解.先安装了弄个Hello World试试吧,呵呵
1,安装
   1.1 下个WTL安装包,其实上个压缩包.现在最新的是8.0版,默认解压目录为C:/WTL80,其中80为版本号,如果下的是7.5则为C:/WTL75
   1.2 自动安装
   在目录C:/WTL80/AppWiz有四个JS文件,选择一个你机子上安装的VC版本,点击相应的JS脚本进行安装即可,如VS2005的VC版本为8.0,则相应文件为setup80.js
   1.3 手动安装
   自动安装有时安装不成功,如点击文件后却打开了一个记事本,其实手动安装也挺不错的.
   将C:/WTL80/AppWiz/Files目录下的三个WTLAppWiz.*文件考到VC安装目录的vcprojects目录下,如E:/Program Files/Microsoft Visual Studio 8/VC/vcprojects, 打开WTLAppWiz.vsz,原文件为:


   VSWIZARD 7.0
   Wizard=VsWizard.VsWizardEngine

   Param="WIZARD_NAME = WTLAppWiz"
   Param="WIZARD_VERSION = 7.0"
   Param="ABSOLUTE_PATH = ."
   Param="FALLBACK_LCID = 1033"
   将其改为
   VSWIZARD 7.0
   Wizard=VsWizard.VsWizardEngine.8.0

   Param="WIZARD_NAME = WTLAppWiz"
   Param="WIZARD_VERSION = 7.0"
   Param="ABSOLUTE_PATH = C:/WTL80/AppWiz/Files"
   Param="FALLBACK_LCID = 1033"

   其中Wizard后面需加上WTL的版本号,否则能在VC里看到WTL项目,但其向导无法工作

   Param ="ABSOLUTE_PATH后加上WTL解压的路径

   新将项目时选择WTL项目,接默认选项生成项目,编译时会报'atlapp.h': No such file or directory错误。需要加一个编译路径,工具-->选项-->项目和解决方案-->VC目录,在左边选择包含文件,把WTL解压目录下的C:/WTL80/include路径加上

   如果编译时报以下两个Bug:

   错误 1 fatal error CVT1100: 重复的资源。type:MANIFEST, name:1, language:0x0409 CVTRES
   错误 2 fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 sdf
    则说明资源文件有问题,具体的原因未知,从网上找我资料看,有以下四种解决方法:

   1,工程属性->配置属性-> 清单工具->输入和输出->嵌入清单,选择[否]

    2,打开rc文件,找MANIFEST,所属段或行全去掉

   3,打开此项目属性页,链接器-->嵌入的 IDL-->类型库资源 ID 设一个从1-65535的值

   4,项目属性页链接器-->清单 文件-->生成清单文件 选项设置为no

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为现代C++最重要的特色技术,template正在各个传统领域攻城略地。从基本算法与数据结构,到正则表达式与XML解析,从高性能数学计算,到资源 的分配与管理,从网络分布式计算环境,到组件模型创建,从静态多态性的维度扩展,到设计模式的自动生成,神奇的template显示出其令人叹为观止的强 劲实力,如果不是有一个隐隐的痛处,template爱好者简直可以去狂欢了。 这个隐隐的痛处,就是在GUI编程领域。 现 有的大部分成熟GUI框架和工具库,其定型时间都在90年代早期,不管是因为什么原因,总之我们根本看不到template技术在这些环境中的任何重要运 用。无论是专有MFC和OWL,还是开源的wxWindow和Mozilla, 以至于是专有还是开源都说不清楚的Qt,它们在其他方面有着诸多不同,偏偏倒是在对待模板技术上空前一致:严格限制在底层的数据结构领域内,抵制模板技术 流入GUI主体结构。最过分的wxWindow和Mozilla,在代码编写规范里严厉禁止使用1990年之后发展出来的任何C++特性,模板、异常、多 继承、STL等等,均在黑名单上。诸位有兴趣,不妨去看看,那与其说是一份C++代码编写规范,倒不如说是对C++现代特性在GUI领域应用的一份不公正 的判决书。 难道模板技术真的在GUI领域无用武之地吗? WTL给出了一个响亮的回答。 WTL是微软 ATL开发组成员Nenad Stefanovic先生在ATL Windowing机制上发展起来的一整套GUI框架,运用template技术组织和创建GUI对象,构筑了精致的面向对象框架(没错,在这里 object oriented与template达成了精致的融合)。虽然没有获得微软的官方支持,虽然其使用者人数很少,但是确实是“用过的都说好”,有位微软 MVP人士甚至说,这是微软有史以来推出的最优秀的一个framework。
使用 WTL(Windows Template Library)进行 Windows 桌面应用开发是一个不错的选择。WTL 是一个轻量级的 C++ 模板库,基于 ATL(Active Template Library),它提供了一套简洁而高效的类和模板来开发 Windows 桌面应用程序。 以下是一个使用 WTL 创建一个简单窗口的示例: ```cpp #include <atlbase.h> #include <atlapp.h> #include <atlwin.h> class CMainWindow : public CFrameWnd { public: CMainWindow() { Create(NULL, _T("WTL Application")); } DECLARE_MESSAGE_MAP() }; BEGIN_MESSAGE_MAP(CMainWindow, CFrameWnd) ON_WM_PAINT() ON_WM_DESTROY() END_MESSAGE_MAP() void CMainWindow::OnPaint() { CPaintDC dc(m_hWnd); CRect rect; GetClientRect(&rect); dc.DrawText(_T("Hello, WTL!"), -1, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE); } void CMainWindow::OnDestroy() { PostQuitMessage(0); } int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR /*lpCmdLine*/, int nShowCmd) { CAppModule appModule; appModule.Init(NULL, hInstance); CMainWindow mainWindow; mainWindow.ShowWindow(nShowCmd); MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } appModule.Term(); return msg.wParam; } ``` 在这个示例中,我们创建了一个名为 "CMainWindow" 的类,继承自 WTL 的 CFrameWnd 类。在类中,我们通过重写 OnPaint 和 OnDestroy 方法来处理窗口的绘制和销毁事件。然后,在 _tWinMain 函数中,我们初始化 WTL 应用程序模块,并创建一个 CMainWindow 对象,最后进入消息循环以响应窗口消息。 请注意,使用 WTL 进行开发需要先安装 WTL 库,并将其包含到项目中。你可以从 WTL 官方网站(https://sourceforge.net/projects/wtl/)下载最新的 WTL 版本。 这只是 WTL 开发的简单示例,你可以根据需要进行进一步的开发和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值