不使用ATL向导,创建一个简单的ATL对话框程序.

原创 2001年09月25日 12:19:00

本例使用CWindowImpl类创建对话框程序.
第一步:建立一个新的Win32 Application工程.

第二步:在stdafx.h中包含下面三行.     

#include <atlbase.h>
extern CComModule _Module;
#include <atlwin.h>

第三步:写WinMain函数,如下:     

int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE, LPSTR, int )
{
_Module.Init( NULL, hInstance );

// Create an instance of CMcbWindow
CMcbWindow atlWnd;
atlWnd.Create( NULL, CWindow::rcDefault, _T("Mahesh's ATL Window"),
WS_OVERLAPPEDWINDOW|WS_VISIBLE );

MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}

_Module.Term();
return msg.wParam;
}
第四步:从CWindowImpl继承CMcbWindow类:

// NOTE: See the template parameter. Its CMcbWindow
class CMcbWindow : public CWindowImpl<CMcbWindow>
{
// START MESSAGE_MAP
BEGIN_MSG_MAP( CMcbWindow )
MESSAGE_HANDLER( WM_PAINT, OnPaint )
MESSAGE_HANDLER( WM_DESTROY, OnDestroy )
END_MSG_MAP()
// END MESSAGE_MAP

// This function will paint a Hello mindcracker string
LRESULT OnPaint( UINT, WPARAM, LPARAM, BOOL& )
{
PAINTSTRUCT ps;
HDC hDC = GetDC();
BeginPaint( &ps );
TextOut( hDC, 0, 0, _T("Hello mindcracker"), 17 );
EndPaint( &ps );
return 0;
}

LRESULT OnDestroy( UINT, WPARAM, LPARAM, BOOL& ){
PostQuitMessage( 0 );
return 0;
}
};
第五步:定义CComModule _Module:

// ATLWnd.cpp : Defines the entry point for the application.
#include "stdafx.h"
CComModule _Module;
最后:编译执行.

 

 

在ATL中创建对话框失败的问题

最近,在用ATL做一个ActiveX控件,这个控件要加载其他的OCX控件,我建了一个支持MFC的ATL工程,然后,在这个工程中insert了一个MFC对话框,把要加载的ocx控件放到这个MFC对话框中...
  • chence19871
  • chence19871
  • 2015年08月18日 16:07
  • 635

在ATL中实现窗口

一、实现对话框   ATL中有三个模板类可用于创建一个对话框:   (1)CSimpleDialog:创建模式对话框, 可以host Windows Controls ...
  • sworder_001
  • sworder_001
  • 2007年03月22日 23:14
  • 3726

使用ATL类来创建一个对话框

在VC环境中,你可以使用MFC来创建对话框,你同样也可以使用ATL类来创建对话框。ATL类是利用模板类的特性来生成新的类的,下面我们介绍一下这个步骤。首先和MFC中创建对话框程序一样,你需要创建一个资...
  • windcsn
  • windcsn
  • 2005年08月03日 20:57
  • 3755

ATL--创建简单的ATL之dll工程,添加“ATL简单对象”类的参数说明

添加“ATL简单对象”类一共分三个步骤 1.添加名称 2.文件类型选项 3.参数选项 添加接口 1.鼠标右键工程添加类 2.类型选择“ATL简单对象” 3.就在简...
  • sakawa_x
  • sakawa_x
  • 2017年07月21日 16:26
  • 307

ATL窗口(1)

ATL窗口,第一部分源程序--------------------------------------------------------------------------------这篇文章由An...
  • JoySwing
  • JoySwing
  • 2001年08月14日 11:56
  • 1513

使用ATL创建窗口的步骤

1、定义ATL的全局对象CAppModule _module; 2、初始化COM组件:CoInitialize和CoUninitialize; 3、初始化COM模块_module.Init() ...
  • gwzz1228
  • gwzz1228
  • 2014年12月01日 10:24
  • 1375

VS2010 ATL服务程序编写全攻略(一) - 建立ATL服务

网上有很多关于编写ATL服务程序的代码和文章,但多数仍使用Visual C++ 6.0的ATL服务程序框架。对于XP系统,Visual C++ 6.0提供的框架能够正常工作,但对于Vista、Wind...
  • sonsie007
  • sonsie007
  • 2013年04月22日 15:06
  • 7383

使用ATL 窗口类

ATL窗口类并不难学,但是许多开发者认为既然有强大的MFC支持,为什么还要同时学习ATL   窗口开发?这是因为MFC强迫你使用应用程序框架结构,同时存在代码过大,性能低下的问题,你还必须审查基于文档...
  • lan354898254
  • lan354898254
  • 2012年05月11日 11:30
  • 6166

ATL创建COM服务时必须注意的问题

1:用ATL向导创建COM组件时,必须指定ProgID 2:ATL向导生成的RGS有BUG,必须手工添加一句 val AppID = s '%APPID%'像下面这样 HKCR { ProgID...
  • yjz1409276
  • yjz1409276
  • 2015年01月31日 02:11
  • 951

ATL中使用CString

在stdafx.h 中的 #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS    // 某些 CString 构造函数将是显式的 下添加一下代码即可: ...
  • AmoyCHC
  • AmoyCHC
  • 2013年03月30日 10:56
  • 4118
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:不使用ATL向导,创建一个简单的ATL对话框程序.
举报原因:
原因补充:

(最多只允许输入30个字)