C++杂记 05/08/2011 开始一个完整的WTL例子

全面掌握Visual C++编程:范例大全 本文还有配套的精品资源,点击获取 简介:《Visual C++范例大全》是一本旨在提升读者对Visual C++开发工具熟练度的综合教程。该教程从基础语法到面向对象编程,再到MFC框架、ATL/WTL、STL及异常处理等多个方面,涵盖广泛实例,帮助读者深入理解并实践Visual C++的强大功能。书中还涉及Windows API调用、调试与测试、多线程编程以及资源管理等高级... 阅读详情

 

1. 生成empty win32 project

2. 加入My1stWTL70Win.cpp

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow)
{...}

int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT)
{...}

3. 添加MyMainWnd Class

 

class MyMainWnd : public CFrameWindowImpl<MyMainWnd>
{
public:
    MyMainWnd();
    virtual ~MyMainWnd();

};

 

Error:

MyMainWnd.cpp
d:/study/wtl/hellowtl70/my1stwtl70win/mymainwnd.h(12) : error C2504: 'CFrameWindowImpl' : base class undefined
d:/study/wtl/hellowtl70/my1stwtl70win/mymainwnd.h(12) : error C2143: syntax error : missing ',' before '<'
d:/study/wtl/hellowtl70/my1stwtl70win/mymainwnd.h(12) : error C2059: syntax error : '<'
Error executing cl.exe.

 

4. 去掉MyMainWnd.cpp文件,OK ?

最后的结果,一个空的windows。相关代码如下:

 


#include "stdafx.h"

#include <atlframe.h>
#include <atlctrls.h>
#include <atldlgs.h>
#include <atlctrlw.h>

#include "MyMainWnd.h"

CAppModule _Module;

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


    //CMainFrame wndMain;
    MyMainWnd wndMain;
   
    if(wndMain.CreateEx() == NULL)
    {
        ATLTRACE(_T("Main window creation failed!/n"));
        return 0;
    }
   
    wndMain.ShowWindow(nCmdShow);
   
    int nRet = theLoop.Run();
   
    _Module.RemoveMessageLoop();

    return nRet;

}

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);
   
    _Module.Term();
    ::CoUninitialize();
   
    return nRet;
}

 

注:此程序在关闭窗口后,进程并没有消失,奇怪!!!

 

5. 增加一个view: MyView

 

Error:

 

Compiling...
My1stWTL70Win.cpp
d:/study/wtl/hellowtl70/my1stwtl70win/mymainwnd.h(19) : error C2146: syntax error : missing ';' before identifier 'myView'
d:/study/wtl/hellowtl70/my1stwtl70win/mymainwnd.h(19) : error C2501: 'MyView' : missing storage-class or type specifiers
d:/study/wtl/hellowtl70/my1stwtl70win/mymainwnd.h(19) : error C2501: 'myView' : missing storage-class or type specifiers
Error executing cl.exe.

 

A: 在MyMainWnd.h中加入头文件:

#include "MyView.h"

 

Compile OK !    ( WHY wizard-generated files have no such issue ?!  头文件被引入的顺序有关系?)

 

 

**** 目前状态 ****

窗口显示出来了,但view里面没有东东。

 

这里有一篇文章讲WTL消息处理的:http://blog.youkuaiyun.com/fengrx/archive/2009/05/09/4163169.aspx

 

6. 让View显示东东,终于搞定!

 

主要修改:在Message map中增加 CHAIN_MSG_MAP(CFrameWindowImpl<MyMainWnd>)

 

MyMainWnd.h的完整代码如下:

 

#include "MyView.h"
class MyMainWnd : public CFrameWindowImpl<MyMainWnd>//, public CUpdateUI<MyMainWnd>
{
public:
    DECLARE_FRAME_WND_CLASS(NULL, NULL)
    MyView myView;
    MyMainWnd(){}
    virtual ~MyMainWnd(){}
    BEGIN_MSG_MAP(MyMainWnd)
        MESSAGE_HANDLER(WM_CREATE, OnCreate)
        //CHAIN_MSG_MAP(CUpdateUI<MyMainWnd>)
        CHAIN_MSG_MAP(CFrameWindowImpl<MyMainWnd>)
    END_MSG_MAP()

public:
    LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
    {
        m_hWndClient = myView.Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE);   
        CMessageLoop* pLoop = _Module.GetMessageLoop();
        ATLASSERT(pLoop != NULL);
        return 0;
    }
};

 

 

 

 

 

WTL编程实践与进阶学习指南 本文还有配套的精品资源,点击获取 简介:Windows Template Library (WTL) 是一个用于开发Windows应用程序的轻量级库,它基于Microsoft的Active Template Library (ATL)。本学习资料涵盖了WTL的基础知识、架构、控件编程、资源管理、UI布局、事件处理、非模态对话框和窗口、国际化和本地化、调试和测试,以及实际示例... 阅读详情

相关推荐

WTL所需头文件和开发例子

进行WTL界面开发所需要的头文件,还有个别的参考例子,非常好。

BCB与WTL(续-VCL和WTL混用实例)

<!--google_ad_client = "pub-0821350481744986";/* 300x250, 创建于 09-2-26 */google_ad_slot = "2191547852";google_ad_width = 300;google_ad_height = 250;// -->自从上次我写了BCB里使用WTL的之后,有来信讨论关于

C++Builder加油站 4093

C++中WTL_和_MFC_编程

目录 WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue ................................ ........................... 6 WTL for MFC Programmers, Part I - ATL GUI Classes ................................ ........................... 8 README.TXTREADME.TXT README.TXTREADME.TXT README.TXTREADME.TXT ................................ ................................ ................................ ......................... 8 对本系列文章的总体介绍 对本系列文章的总体介绍 对本系列文章的总体介绍 ................................ ................................ ................................ ....... 9 对第一章的简单介绍 对第一章的简单介绍 ................................ ................................ ................................ ............. 11 ATL ATL ATL 背景知识 ................................ ................................ ................................ ....................... 11 ATL 和 WTL 的发展历史 ................................ ................................ ......................... 12 ATL-style 模板 ................................ ................................ ................................ ............. 12 ATL ATL ATL 窗口类 ................................ ................................ ................................ ........................... 15 定义一个窗口的实现 定义一个窗口的实现 ................................ ................................ ................................ ............. 17 填写消息映射链 ................................ ................................ ................................ ............. 19 高级消息映射链和嵌 高级消息映射链和嵌 入类 ................................ ................................ ................................ ..... 21 ATLATL 程序的结构 ................................ ................................ ................................ .................... 24 ATLATL 中的对话框 ................................ ................................ ................................ .................... 27 WTL for MFC Programmers, Part II - WTL GUI Base Classes ................................ ............. 32 对第二部分的介绍 对第二部分的介绍 ................................ ................................ ................................ ................. 32 WTL WTL WTL WTL 总体印象 ................................ ................................ ................................ ...................... 32 开始写 WTLWTLWTL程序 ................................ ................................ ................................ .................. 33 WTL WTL WTL WTL 对消息映射的增强 ................................ ................................ ................................ ...... 36 从 WTLWTLWTL的应用程序生成向导能得到什么 的应用程序生成向导能得到什么 的应用程序生成向导能得到什么 ................................ ................................ .......... 42 使用向导的整个过程 ................................ ................................ ................................ ..... 42 查看生成的代码 ................................ ................................ ................................ ............. 44 CMessageLoop CMessageLoop CMessageLoop CMessageLoop CMessageLoop CMessageLoop CMessageLoop CMessageLoop 的内部实现 ................................ ................................ ................................ .. 47 CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl 的内部实现 ................................ ................................ ......................... 48 回到前面的时钟程序 回到前面的时钟程序 ................................ ................................ ................................ ............. 50 界面元素的自动更新 界面元素的自动更新 (UI Updating)(UI Updating)(UI Updating)(UI Updating) (UI Updating) (UI Updating)(UI Updating)(UI Updating)(UI Updating) (UI Updating) ................................ ................................ ...................... 51 添加控制时钟的新菜单项 ................................ ................................ ............................. 52 调用 UIEnable()................................ ................................ ................................ ............ 53 消息映射链中最后需要注意的地方 消息映射链中最后需要注意的地方 消息映射链中最后需要注意的地方 消息映射链中最后需要注意的地方 ................................ ................................

WTL for MFC Programmers, 中文版序言

WTL for MFC Programmers, Chinese Version Prologue 我一直在寻找这样一个类库:他对Windows的窗口提供面向对象的封装,有灵活的消息响应机制和比较完备的界面框架解决方案,对标准控件提供简练实用的封装,支持操作系统的新特性,支持功能扩充和二次开发,有代码自动生成向导机制,生成的程序使用较少的系统资源,最后是有完全的代码支持和文档支持。你会

oRbIt 的专栏 4041

WTL的一个窗口实例

WTL的一个窗口实例

WTL建立Dialog例子

WTL建立Dialog例子,用WTL建立的Dialog的小例子

深入剖析WTL—WTL框架窗口分析

深入剖析WTL—WTL框架窗口分析WTL的基础是ATL。WTL的框架窗口是ATL窗口类的继承。因此,先介绍一下ATL对Windows窗口的封装。 由第一部分介绍的Windows应用程序可以知道创建窗口和窗口工作的逻辑是: 1 注册一个窗口类 2 创建该类窗口 3 显示和激活该窗口 4 窗口的消息处理逻辑在窗口函数中。该函数在注册窗口类时指定。 从上面的逻辑可以看出,要封装窗口主要需解决怎样封装

Ei的日志 2568

WTL 学习资料(实例丰富最好的学习wtl的资料)

WTL 学习资料(实例丰富最好的学习wtl的资料) WTL 学习资料(实例丰富最好的学习wtl的资料) WTL 学习资料(实例丰富最好的学习wtl的资料)

杂记 05/07/2011-3 正式学习WTL

1. 官网 http://wtl.sourceforge.net/   2. 一些资源 http://wtl.sourceforge.net/links.htm http://www.yesky.com/zhuanti/302/1927802.shtml An article about developing Ping using WTL   3. readme.html fr

printf1998的专栏 507

VOS3000线路对接、路由配置与路由分析操作教程

通过本教程,你应该已经掌握了VOS3000的线路对接、路由配置和路由分析的基本操作。添加备用路由:为常用前缀添加备用路由,确保在主路由失效时呼叫仍能正常进行。进入线路管理:点击“系统管理” -> “线路管理” -> “添加线路”。查看日志:在“系统日志”中查看路由选择情况,确保路由配置正确。失败原因:查看失败呼叫的原因(如“无应答”、“线路忙”等)。线路选择:选择之前添加的线路(如“供应商A”)。保存并启用:填写完毕后,点击“保存”并启用路由。路由名称:自定义一个名称(如“路由A”)。

AI_wx_3307623172的博客 2970

LM1875官方电路图元件作用解释说明以及电路调校

R1是为C1提供充放电回路用的电阻,这是老外工作严谨的地方,其实接好电位器之后直流通路就已经存在了,这个加上只能防止最恶劣情况时也能把C1的电能放掉,尽管只有一点点 C1是输入电容,主要作用是隔离前后级的直流信号,但是这个电容对音质的影响很大,可以换用不同的品牌和容量来部分修改音质和音色 R2提供LM1875正输入端的直流电平控制点,接地就表示在理想情况下Lm1875的输出直流电平是0V;还有一个作用就是确定放大器的交流输入阻抗为电阻值。 R3、R4是反馈电阻,这个电路的放大倍数为R4/R3+1=21倍。.

m0_50862404的博客 1万+

STL,ATL,WTL之间的联系和区别

STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在...

552

中颖单片机SH79F3213正弦波矢量的电动车小毛驴控制器量产资料

中颖单片机SH79F3213正弦波矢量的电动车小毛驴控制器量产资料 中颖单片机SH79F3213 制作的电动车小毛驴控制器量产资料,已量产十几万片,拿到手即可量产 1、提供原理图 2、提供PCB图 3、提供C语言源代码程序 4、提供清单 ...

m0_69036675的博客 4525

WTL较新的示例(4个)

http://www.codetools.com/useritems/ketchup.asp Download demo project - 63.7 Kb GOOD BYE BEGIN_MSG_MAP! By mb2sync Custom Tab Controls, Tabbed Frame and Tabbed MDI By ...

weixin_34321753的博客 203

全面认识PFC和LLC

想象一下,你在拉一辆车,如果你的力气都用在推动车子前进的方向上,这样拉车会比较轻松。而如果你的力气用在不正确的方向,比如侧向、斜向,那就需要更大的力气才能推动车子。PFC就是在帮助电流“朝着正确的方向”流动,这样可以用更少的能量做更多的事情,减少无用的功率损耗。PFC负责将电流方向对齐,让电源效率更高,而LLC负责电压的高效转换,两者配合可以在更宽的负载范围内保持高效率。综上所述,PFC LLC电路是一种高效的电源转换电路,通过PFC模块和LLC模块的组合,实现了从交流电到直流电的高效转换。

weixin_43199439的博客 6093

cesium 综合教程200+【目录】(已包含186篇文章)

cesium示例教程100+旨在为开发者提供简单快捷的,。在每一个示例中,解释相应的API知识点,做到。目录中有链接的为已有文章,没链接的为目标文章,不断更新中…

大剑师兰特的GIS世界 8891

使用WTL进行Windows桌面应用开发-第一部

基于Windows平台的ATL/WTL桌面应用程序开发.使用C/C++作为开发语言, 开发Windows本地桌面程序.WTL界面库是MFC的替代选择, 是Win32界面编程的薄封装,可以说学会WTL开发即学会了Win32界面开发。适合中小型公司开发基于C/C++语言的客户端项目, 因为WTL可以进行快速开发,不需要其他语言.由浅入深介绍WTL桌面开发涉及到的原理和技术, 从简单界面到自定义界面,自定义按钮表格都有介绍。在绘制窗口元素如文本,图形介绍了GDI和GDI+的常用的开发技巧。介绍了项目开发中遇到的一些细节问题.WTL配置少, 只有头文件,不需要编译为库, 性能高,不依赖第三方库,文件小, 运行快,调试方便, 升级方便。

路径跟踪 | 图解分析人工势场算法APF(附ROS C++/Python/Matlab仿真)

人工势场法的基本思想是在机器人运动环境中创建一个势场,再搜索一条势函数下降的方向,寻找一条无碰撞的最优路径。本文介绍APF算法的基本原理,并提供势场可视化实现,基于ROS C++/Python/Matlab进行算法仿真实验加深理解

FRIGIDWINTER的博客 7393

C++ STL,ATL,WTL之间的联系和区别

C++ STL,ATL,WTL之间的联系和区别 2013年12月05日 16:09:55LoveApp_Han阅读数 15283 STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现...

cxu123321的博客 963

基于STM32、HAL库的AD7124-8BCPZ模数转换器ADC驱动程序设计

/ 配置0: 使用内部参考电压(2.5V),增益128,双极性。// 配置通道0: AIN0+和AIN1-,使用配置0和滤波器0。// 100ms采样间隔。// 转换为电压值(使用内部2.5V参考电压)// 构造读命令: 最高位为1表示读,接下来7位是寄存器地址。// 构造写命令: 最高位为0表示写,接下来7位是寄存器地址。// 配置滤波器0: 输出数据率50Hz,后置滤波器4。

corlin6688的博客 528

【SECS】初识SECS协议

项目标题的第一位和第二位告诉下面有多少字节表示项目的长度。而项目的长度是指项目标题后面的字节数,这里第一个字节就是项目标题。1个字节可以表示的最大长度是0-255,所以只要项目标题后面的字节数小于等于254,都是0x01。

weixin_48618536的博客 1642

WTL体系结构

绪论 WTL最终来了,而且提供了我所希望的功能.我在WTL Bytesize(译文)的文章列出WTL主要特征.在本文中,我将描述一下WTL的体系结构,同时我会给出一些简单的例子来演示如何使用它的那些特征.希望能够对您有所帮助. WTL应用程序的类型 WTL有好几种应用程序类型,供您在AppWizard选取. 下表对这些应用程序进行了描述. 这种弹性构成了...

weixin_30797027的博客 185

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VC++: WTL系统托盘的简单示例

wtl、mfc是对win32函数的hWnd封装,使用m_hWnd代替hWnd,win32函数和mfc函数对比,只是多了hWnd而已。将同功能的win32函数封装进一个类中。wtl、mfc本质上和win32区别不大,按照其关键字搜索都能找到对应的win32函数。4. CMainFrame::OnCreate 函数中加入 初始化代码。3.定义 NOTIFYICON 变量,声明响应的回调函数。2. 在消息循环中加入。

genghao的专栏 277

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 杂记 05/07/2011-3 正式学习WTL
下一篇: 读书时间 05/08/2011 Windows Programming V2
printf1998
博客等级 码龄16年 14粉丝 196原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值