这是一个相当于“Hello world!”的任务,作为认识ATL,考查了其运作流程与机制。

环境:VS2008

创建:新建-项目-Win32项目-添加公用头文件用于(选择ATL)。

PS:注意新建项目取消预编译头与设置自增链接为默认

需要用到的头文件:

,,

OK,下面进行程序设计:(非完整代码,主要便于认识)

Main函数:

int APIENTRY _tWinMain(HINSTANCE hInstance,  
   HINSTANCE hPrevInstance,  
   LPTSTR lpCmdLine,  
   int nCmdShow)  
{  
CMyWindow myWnd;  
myWnd.Create(NULL, CMyWindow::rcDefault, _T(CC_WINDOW_TITLE)); 
myWnd.ShowWindow(nCmdShow);  
myWnd.UpdateWindow();  
MSG msg;  
msg.message = ~(UINT)WM_QUIT;  
while(msg.message != WM_QUIT)  
{  
if(::GetMessage(&msg, NULL, 0, 0))  
{  
TranslateMessage(&msg);  
DispatchMessage(&msg);  
}  
}

//PS:不多说,注意_tWinMain入口,这是unicode编码入口函数,详情看宏定义

//窗口类定义

这里我使用的是CwindowImpl

类继承,e.g :

class CMyWindow:public CWindowImpl

//即继承自CWindowImpl,后面为自身属性,亦可以多一个CWinTraits

ATL使用消息映射机制:

public:

//先声明我的类名

DECLARE_WND_CLASS(_T("CMyWindow"))  //名字并非一定得是类名,任意可区分即可

//消息映射列表

BEGIN_MSG_MAP(CMyWindow)

MESSAGE_HANDLER(WM_PAINT,OnPaint)

//OnPaint为函数名,如此定义意味着你必须定一个OnPaint函数去响应WM_PAINT消息

END_MSG_MAP()

//PS:消息响应分为三种:NOTIFY_HANDLER,COMMAND_HANDLER,MESSAGE_HANDLER

//实现OnPaint消息

LRESULT OnPaint(UINT nInt, WPATAM wParam,LPARAM lParam,BOOL &bHandled);

具体自己可以实际操作一下,很方便。

认识ATL窗口的更多相关文章

  1. ATL窗口

    标准的Windows应用程序框架: /*------------------------------------------------------------ HELLOWIN.C -- Displ ...

  2. ATL封装IE内核启示:使用Win32/ATL建立窗口

    开发大型GUI界面程序MFC当仁不让,但如果是开发图形应用程序,并不需要大规模界面控件,没有必要链接庞大的MFC库,直接使用platform sdk会很麻烦,这时ATL中的关于Windows的封装就是 ...

  3. 使用Win32/ATL建立窗口的过程

    有时候想写个几十kb的小程序,MFC实在是太大了,Win32有时又太麻烦,怎么办呢?用ATL写会更方便和轻量级一些 ATL和MFC不同的是,ATL并没有强制性封装WinMain函数,仅封装了WndPr ...

  4. 关于Windows窗口框架

    我们知道Windows的窗口消息处理函数是C方式, 面向过程的, 所以窗口框架的基本任务就是将它转成面向对象的方式, 确切的说如何将消息处理函数第一参数HWND转成对象指针. 关于这个问题, 其实网上 ...

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

    STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R M ...

  6. STL,ATL,WTL的联系与区别

    STL   即   Standard   Template   Library         STL(标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander   Stepanov. ...

  7. ATL的GUI程序设计(4)

    第四章 对话框和控件 对于Win32 GUI的程序设计来说,其实大部分的情况下我们都不需要自己进行窗口类的设计,而是可以使用Win32中与用户交互的标准方式--对话框(Dialog Box).我们可以 ...

  8. ATL的GUI程序设计(3)

    第三章 ATL的窗口类 CWindowImpl.CWindow.CWinTraits,ATL窗口类的奥秘尽在此三者之中.在本章里,李马将为你详细解说它们的使用方法.另外,本章的内容也可以算是本书的核心 ...

  9. HOOK自绘原理 good

    做“HOOK文件打开/保存对话框”的过程中,我首先研究了界面库的相关知识.界面库一般都是由C/C++这种中低级语言编码,这是因为在Windows下的界面库实现技术大都以直接操作控制Windows的消息 ...

随机推荐

  1. 使用enum建立简单的状态机

    Overview The enum in Java is more powerful than many other languages which can lead to surprising us ...

  2. HDU 1285 确定比赛名次(简单拓扑排序)

    题目链接: 传送门 确定比赛名次 Time Limit: 1000MS     Memory Limit: 65536K Description 有N个比赛队(1 Input 输入有若干组,每组中的第 ...

  3. django1.8 提示(1_8.W001) The standalone TEMPLATE_* settings were deprecated in Django 1.8 and the TEMPLATES dictionary takes precedence. You must put the values of the following settings into your defau

    原因是升级之后不推荐使用单独的 TEMPLATES_DIR这样的设置了,使用TEMPLATE = []这种就好了 详细见https://openedx.atlassian.net/browse/TNL ...

  4. 重启电脑后,oracle数据库连接不上

    oracle10g安装成功后使用正常,重启电脑后,连接不上了,电脑-服务中各个服务都手动重启了,仍然无效 报错信息:ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 要手工去操作命 ...

  5. PhyLab2.0设计分析阶段任务大纲(α)

    任务概述 由于接手软剑攻城队的PhyLab项目,省去了用户需求分析.团队编码规范.用户界面原型设计和后端逻辑设计的大部分环节,因此前期的主要任务落在了用户使用反馈.功能优化增改方向.用户体验优化以及源 ...

  6. ApkTool反编译apk,去除广告或者汉化后重新打包apk,并签名

    http://my.oschina.net/mopidick/blog/135581 以ubuntu的环境为例子,window的大同小异 首先下载apktool工具:https://code.goog ...

  7. Linux nginx 配置 location 语法 正则表达式

    location语法:location [=|~|~*|^~] /uri/ { - }默认:否上下文:server这个指令随URL不同而接受不同的结构.你可以配置使用常规字符串和正则表达式.如果使用正 ...

  8. BZOJ1031: [JSOI2007]字符加密Cipher

    传送门 后缀数组模板题 //BZOJ 1031 //by Cydiater //2016.9.21 #include <iostream> #include <cstring> ...

  9. 机器学习笔记----- ID3算法的python实战

    本文申明:本文原创,如有转载请申明.数据代码来自实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. Hell ...

  10. 【转】Airbnb React编码规范

    Airbnb的编码规范是在业界非常流行的一套规范,而且它一直都在进化,推出最新技术的规范 原文:https://zhuanlan.zhihu.com/p/20616464 用更合理的方式书写React ...