VC杂记 2011/05/22 WTL

ATLIMPL.CPP // This is a part of the Active Template Library. // Copyright (C) 1996-1998 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Active Temp 阅读详情

1. 杂问

Q:所有conf-client的项目介绍及物理位置?

Q:Why在VA中搜索不到GetProcAddress函数?

Q:SourceInsight的使用?

Q:VC6如何处理LinuxC++工程?

Q:我们的UI库到底做过什么功能?

Q:My1stWTL70Win项目的所有文件为什么都看不见了?

    A:估计是*.dsp文件里的SOURCE项因故丢失了(比如突然关机)

Q:我们的Component库似乎实现了类似COM++的什么功能?

Q:VC6中,如何把一些已经有的*.cpp/*.h放进project中?

    A:在文件tab中,右击folder,选择Add Files to Folder

Q:Why在VA的symbol搜索里找不到CFrameWindowImpl?

 

 

2. WTL前期工作总结

* 使用WTL的wizard完成一个例子HelloWTL70Win,可以运行

* 参照Wizard的例子,手工完成过一个例子,My1stWTL70Win,有main framewindow,也有view

把这两个例子重新做一遍

 

3. HelloWTL70Win2

* 安装

E:/software-repository/cpp/vc/wtl70/AppWiz60/setup.js,执行即可

* 使用

安装WTL70 Wizard后,在File/New/Project中会有相关选项出现


* WTL基本过程总结

初始化WTL环境:   

    HRESULT hRes = ::CoInitialize(NULL);

实例化Loop instance并加入到_Module

实例化主窗口对象并显示(窗口类注册陷含完成了)

执行Loop中的消息循环:

    theLoop.run();

删除Loop instance

清理WTL环境

    _Module.Term();
    ::CoUninitialize();

 

注:必须定义一个CModuleApp对象:

CAppModule _Module;

 

 

4. My2ndWTL70Win项目

 

* build/compile Error

e:/projects-workspace/box-4.2-ucp-4.5-0429/src/uilib/wtl80/atlframe.h(22) : fatal error C1189: #error :  atlframe.h requires atlapp.h to be included first
Error executing cl.exe.

 

注1:搞不清状况,重新建一个project,建立的时候选择empty win32。

 

5. My2ndWTL70Win2项目

使用File/New加入一个新的文件:My2ndWTL70Win2.cpp

结果仍然出现4.中的同样问题。

 

6. 让上次写的My1stWTL70Win项目恢复工作

* 把以前的项目目录变成My1stWTL70Win.bak

* 新建一个My1stWTL70Win

* 将所有文件copy到新目录

* 在文件栏里把相关文件加入project

* 处理MyView.cpp的一些问题后OK

 

7. 定位4.与5.中出现的问题

经反复检查,发现My1stWTL70Win项目中,有一个stdafx.h,其中内容如下:

 

// Change these values to use different versions
#define WINVER        0x0400
//#define _WIN32_WINNT    0x0400
#define _WIN32_IE    0x0400
#define _RICHEDIT_VER    0x0100

#include <atlbase.h>
#include <atlapp.h>

extern CAppModule _Module;
#include <atlwin.h>

 

所以,这是在WTL Wizard中设置的,通过这种方式包含了正确的头文件!

Note:也就是说,在WTL Wizard中,stdafx.h中会自动包含正确的头文件,而手工做的时候,需要自己去包含。 2011/11/15

 

8. 重做My2ndWTL70Win项目

 

* Error:

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

奇怪的是,当前project是My2ndWTL70Win,但报出的错误却在My1stWTL70Win!

 

把MyMainWnd.cpp从project去掉,并将其constuctor/deconstructor在MyMainWnd.h中实现,OK!

 

## 目前为止,一个空白的Window出来,但没有任何东东显示 ,下一步让Window里有view,并在view里显示东东 ##

 

* 定义MyView实例,Error

d:/study/wtl/hellowtl70/my2ndwtl70win/mymainwnd.h(15) : error C2146: syntax error : missing ';' before identifier 'MyView'
d:/study/wtl/hellowtl70/my2ndwtl70win/mymainwnd.h(15) : error C2501: 'CMyView' : missing storage-class or type specifiers
d:/study/wtl/hellowtl70/my2ndwtl70win/mymainwnd.h(15) : error C2501: 'MyView' : missing storage-class or type specifiers

 

增加头头文件引用:#include "myview.h", OK !

 

* 把MyView加进MyMainWnd,在CMyMainWnd::OnCreate里

 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;
    }

* 在消息印射中一定加入CHAIN_MSG_MAP

    DECLARE_FRAME_WND_CLASS(NULL, NULL)
    BEGIN_MSG_MAP(CMyMainWnd)
        MESSAGE_HANDLER(WM_CREATE, OnCreate)
        CHAIN_MSG_MAP(CFrameWindowImpl<CMyMainWnd>) // this is a must, otherwise, no message handled by view. but WHY ?
    END_MSG_MAP()

 

## 到目前(20:20),一个完整的WTL程序可运行,耗时约4小时 ##

 

9.最后的问题:

Q:WHY不能有CMyMainWnd.cpp与CMyView.cpp?

Q: CHAIN_MSG_MAP做了什么东东?

 

 

 

 

 

 

 

ATLWIN.H // This is a part of the Active Template Library. // Copyright (C) 1996-1998 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Active Temp 阅读详情

相关推荐

ATLCOM.H

// This is a part of the Active Template Library. // Copyright (C) 1996-1998 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Active Temp

梦想起飞的地方 3285

WTL-学习疑问

1、double转cstring用format函数报错 答:因为WTL版本的Format方法不支持浮点,这跟MFC不一样!!!!我一开始就搞错了 2、 WTL的TrimRight() 和TrimLeft()方法是用来剔除多余的空白空间,但是!MFC版本是剔除指定的任何字符/字符组,我之前用它来在MFC中剔除小数点后无效的0 3、在WTL中使用cstring ,定义在atlmisc.h中,在前面加上#define _WTL_USE_CSTRING,否则会出问题滴~ ...

xiyoubu的博客 465

科技中介服务机构如何高效完成技术成果的筛选与匹配服务?.docx

科技中介服务机构如何高效完成技术成果的筛选与匹配服务?

wtl学习

1、介绍 WTL 是 Windows Template Library 的缩写,由微软的ATL(Active Template Library) 小组开发,主要是基于 ATL 对Win32API 的封装。从 2.0 后,功能逐步完善,成为了一个完整的支持窗口的框架(windows framework)。 WTL 功能不如MFC完善,但是比 MFC 更小巧,不依赖 MFC 的DL

mofabang的专栏 1231

coppeliasim+gym+sac机械臂到位实验

urdf文件

产业园区如何通过数智工具精准识别企业技术需求,提高服务匹配效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

经常使用的一些配置信息路径

CustomTabCtrl.h requires atlgdix.h to be included first C:\WTL91_5321_Final\Include; XzmSqlite3WtlApp-- $(SolutionDir)bin\$(Configuration)\$(ProjectName)\ Sqlite3DbEngine-- Sqlite

xzm_cn 556

搜素引擎+p2p+电脑全域搜素+快速检索文件

快速搜索电脑内一切文件,反应超快

三相电压型PWM整流器PI双闭环控制Matlab仿真

内容概要:本文系统介绍了三相电压型PWM整流器的PI双闭环控制系统在Matlab/Simulink环境下的建模与仿真方法,重点阐述电压外环与电流内环的协同控制机制,通过PI调节器实现直流侧电压稳定控制及交流侧单位功率因数运行。内容涵盖电压定向控制(VOC)、空间矢量PWM(SVPWM)调制策略、电网不平衡条件下的功率平衡控制等关键技术,并延伸至维也纳(Vienna)整流器、中点电压平衡、滞环电流控制等多种先进拓扑与控制方法。配套提供Mathcad计算书,支持不同功率等级下的参数设计、闭环建模与工程化实现,形成从理论分析到仿真验证的完整技术链条,适用于电力电子系统科研与教学实践。; 适合人群:电气工程、电力电子及相关专业的研究生、科研人员,以及具备Matlab/Simulink仿真基础的工程技术人员。; 使用场景及目标:① 掌握三相PWM整流器双闭环PI控制系统的建模、仿真与动态性能分析;② 深入理解电压定向控制、SVPWM调制及电网不平衡工况下的先进控制策略;③ 利用Mathcad计算工具完成实际工程中整流器的参数设计与优化。; 阅读建议:建议结合Simulink仿真模型与Mathcad计算书同步学习,重点关注控制架构搭建、PI参数整定方法、系统稳定性分析及不同工况下的仿真验证,通过反复调试提升对控制性能的理解与工程应用能力。

USB2.0信号完整性测试之眼图

名称线缆颜色引脚描述红色绿色白色GND黑色。

qq_53766840的博客 3285

Cadence Virtuoso实战:3分钟搞定反相器参数化设计(附CDF配置避坑指南)

本文详细介绍了如何在Cadence Virtuoso中利用CDF参数传递功能实现反相器的参数化设计,包括PMOS和NMOS的基础搭建、CDF配置技巧及常见报错解决方案。通过实战案例和避坑指南,帮助工程师快速掌握高效设计方法,提升集成电路设计效率。

weixin_28292761的博客 334
上一篇: UC 杂记 05/21/2011 重温旧梦
下一篇: 读书时间 2011-05-23 Linux/C/++
printf1998
博客等级 码龄16年 14粉丝 196原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值