`
jgsj
  • 浏览: 962502 次
文章分类
社区版块
存档分类
最新评论

ATL入门学习

 
阅读更多

ATL是一个比较轻量级的快速开发环境,用于开发COM服务器程序。我也是最近学习ATL的。由于有了一些win32的知识,所以在学习ATL之前想应该不难吧。但是令我没有想到的是,ATL大量地用了模板,这样奇怪的用法让我无法适从。但是仔细学习后,我终于发现其中的真谛。原来ATL是那样一回事啊。学习ATL,可以使我们抛弃MFC,开发更加高效的win32程序。我行,你也行!

以下是我自己仿照例子程序写的第一个ATL程序:

WinMain.h

// 头文件
#define STRICT
#include <atlbase.h>
extern CComModule _Module;// 这个是每一个WTL程序必须有的(模块的声明)
#include <atlwin.h>

// 我们画的window类
class CTestWindow: public CWindowImpl< CTestWindow, CWindow, CFrameWinTraits >
{
public:
	DECLARE_WND_CLASS( TEXT( "我的测试窗口" ) )// 声明窗口的名字

	// 消息响应
	BEGIN_MSG_MAP( CTestWindow )
		MESSAGE_HANDLER( WM_CLOSE, OnClose )
		MESSAGE_HANDLER( WM_DESTROY, OnDestroy )
	END_MSG_MAP( )

	LRESULT OnClose( UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/ )
	{
		DestroyWindow( );
		return 0;
	}

	LRESULT OnDestroy( UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/ )
	{
		PostQuitMessage( 0 );
		return 0;
	}
};


WinMain.cpp

#include "WinMain.h"

// 全局变量
CComModule _Module;// 模块的定义

// 主函数
int WINAPI WinMain( HINSTANCE hInst, HINSTANCE /*hInstPrev*/, LPSTR /*szCmdLine*/, int nCmdShow )
{
	_Module.Init( NULL, hInst );// 初始化ATL对象

	CTestWindow myTest;

	HWND hTestWindow;
	MSG msg;

	// 使用ATL创建窗口
	hTestWindow = myTest.Create( NULL, CWindow::rcDefault, TEXT( "我的第一个ATL窗口" ) );
	if ( hTestWindow == NULL ) return 1;// 创建窗口失败

	// 显示窗口
	myTest.ShowWindow( nCmdShow );
	myTest.UpdateWindow( );

	// 进入消息循环
	while ( GetMessage( &msg, NULL, 0, 0 ) > 0 )
	{
		TranslateMessage ( &msg );
		DispatchMessage ( &msg );
	}

	_Module.Term( );// 释放模块空间

	return 0;
}


分享到:
评论

相关推荐

    ATL基础知识学习资料

    利用 ATL 所支持的控件容纳,可实现容纳控件。比如, CAxDialogImpl 中的 Ax 两字就表示 ActiveX 控件,表示对话框具有容纳控件的能力。在对话框中实现容纳控件,只需在对话框资源上点击右键,从弹出菜单选择 Insert...

    C++中ATL与WTL学习

    第二部分 - WTL 中的 GUI 基础类 • 下载示例代码 - 119 K 内容 • 第二部分介绍 • WTL 综述 • 开始一个 WTL EXE • WTL 消息映射的增强 • 使用 WTL AppWizard 可以得到什么 o 通历向导(VC 6) o 通历向导(VC 7...

    ATL编程入门

    ATL编程入门 英文原版书籍,很好的学习资料,放在这里备份。

    ATL开发指南 com学习

    ATL学习的入门书籍,最主要是容易懂...... 入门快

    atl编程基础源码分享

    这是一个比较好的atl代码例子,需要的可以取去学习!

    vc++ ATL与WTL学习 pdf

    第一部分 - ATL 中的 GUI 类 第二部分 - WTL 中的 GUI 基础类 第三部分 - 工具栏和状态栏 第四部分 - 对话框和控件 第五部分 - 高级对话框 UI 类 第六部分 - 掌控 ActiveX 控件

    atl_edit.rar_ATL_activex atl edit de_atl richedit_atl edit

    ATL入门级的代码,简单,用来学习分析1

    深入解析ATL(第2版).pdf

    中文名: 深入解析ATL(第2版) 原名: ATL Internals, 2nd Edition Working with ATL 8 别名: ATL 作者: (美)塔瓦瑞斯译者: 赖仪灵 ...D.1 ATL Attributes的基础 D.2 属性化ATL的未来 D.3 总结 索引

    ComDemo.rar_ATL_ATL com _equipmentd54

    ATL编程的简单入门实例,通过实例可以学习ATL的简单实现过程

    学习WTL 的基础教程

    不需要学习或掌握复杂的文档/视图框架。 具有MFC的基本的界面特色,比如DDX/DDV和命令状态的自动更新功能(译者加:比如菜单的Check标记和Enable标记)。 增强了一些MFC的特性(比如更加易用的分隔窗口)。 可...

    ATL&COM 也是东软的资料 共同学习

    这些质料我没看过,以后会看看。又想看的先观摩一下吧。

    Qt基础学习笔记

    Qt [1] 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。...基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。

    JAVA语言学习方法

    JAVA语言学习方法 C语言是各大操作系统的基础,Unix、Linux、Windows其内核都清一色是C语言开发的,(某些地方是和汇编语言混合开发的),君不见Windows API都是C语言函数的接口?Unix/Linux绝大多数应用都是C语言开发...

    C0M技术内幕书+源码

    学习COM技术必备的东西,也是学习ATL的基础。

    最全VS2010初级教程学习手册

    最全VS2010初级教程学习手册 VS2010安装 配置手册 《Visual C++ 2010入门教程》系列二:安装、配置和首次使用VS2010 1 写在前面 第一章 关于Visual Studio、VC和C++的那些事 1 第二章 安装、配置和首次使用VS2010 2 ...

    Cocos2d-x 3.x入门教程(一):基础概念

    对于我来说,Cocos2d-x就是一个类库,就类似于MFC、ATL和QT一样,就是一个游戏类库,而我就按照学习类库使用的方法去学习Cocos2d-x。这篇文章叫基础概念,但是还是从整体来说说Cocos2d-x这个类库的。 基础架构 在...

    数据结构教程,好好打好基础

    在学习《数据结构》之前,要求学生有C/C++基础。可以这样说,C/C++是其他程序设计语言的基础。掌握了C/C++,学习其他语言就会易如反掌。例如,微软的MFC类库基于C++;ATL基于C++中的模板类;Java语言基于C++思想,...

    deepicedrain:使用ICESat-2,利用遥感和机器学习来绘制和监测南极冰河深水活动!

    Antactica的冰面高度变化趋势活跃的冰川下湖充填活动沿ATL11地面轨道的轨道视图交叉点的高程时间序列入门快速开始在 (云中的交互式jupyter实验室环境)中启动。用法正确安装了(请参阅下面的安装说明),您将可以...

    COM编程精彩实例+光盘(源代码)

    这是一本学习COM的入门教程,虽然书是2001年左右的,比较旧了,但是不可谓不经典。与其他介绍com技术的书籍相比,其丰富的实例是最大的特色,非常适合初级选手入门,之后再去读读《COM本质论》等高级的技术书籍更好...

    MFC程序员的WTL编程

    不需要学习或掌握复杂的文档/视图框架。 具有MFC的基本的界面特色,比如DDX/DDV和命令状态的自动更新功能(译者加:比如菜单的Check标记和Enable标记)。 增强了一些MFC的特性(比如更加易用的分隔窗口)。 可...

Global site tag (gtag.js) - Google Analytics