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

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

本例使用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;

最后:编译执行.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有