vc++ atl编程

来源:互联网 发布:公路算量软件 编辑:程序博客网 时间:2024/06/14 14:00

一、

简单HelloWolrd:

#include <atlbase.h>CComModule _Module;int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd ){_Module.Init( NULL, hInstance );MessageBox( NULL, _T("Hello, World!"), _T("Hello"), 0 );_Module.Term();return 0;}

2、

#include <atlbase.h>CComModule _Module;int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd ){_Module.Init( NULL, hInstance );_Module.m_hInstResource = LoadLibrary( _T("shell32.dll") );MSGBOXPARAMS mbp;ZeroMemory( &mbp, sizeof( mbp ) );mbp.cbSize       = sizeof( mbp );mbp.dwLanguageId = GetSystemDefaultLangID();mbp.dwStyle      = MB_USERICON;mbp.hInstance    = _Module.GetResourceInstance();mbp.lpszCaption  = _T("Hello");mbp.lpszIcon     = MAKEINTRESOURCE( 44 );mbp.lpszText     = _T("Hello, World!");MessageBoxIndirect( &mbp );FreeLibrary( _Module.m_hInstResource );_Module.m_hInstResource = NULL;_Module.Term();return 0;}

3、

#include <windows.h>#include <tchar.h>LRESULT CALLBACK HelloWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ){switch ( uMsg ){case WM_DESTROY:{PostQuitMessage( 0 );}break;case WM_PAINT:{HDC hdc;PAINTSTRUCT ps;hdc = BeginPaint( hWnd, &ps );DrawText( hdc, _T("Hello, SDK!"), -1, &ps.rcPaint, DT_CENTER | DT_VCENTER | DT_SINGLELINE );EndPaint( hWnd, &ps );}break;default:return DefWindowProc( hWnd, uMsg, wParam, lParam );}return 0;}BOOL InitApplication( HINSTANCE hInstance ){WNDCLASS wc;wc.cbClsExtra    = 0;wc.cbWndExtra    = 0;wc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH );wc.hCursor       = LoadCursor( NULL, IDC_ARROW );wc.hIcon         = LoadIcon( NULL, IDI_APPLICATION );wc.hInstance     = hInstance;wc.lpfnWndProc   = HelloWndProc;wc.lpszClassName = _T("HelloSDK");wc.lpszMenuName  = NULL;wc.style         = CS_HREDRAW | CS_VREDRAW;return RegisterClass( &wc );}int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd ){// 注册窗口类InitApplication( hInstance );// 创建窗口HWND hWnd = CreateWindow( _T("HelloSDK"), _T("Hello SDK"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL );ShowWindow( hWnd, nShowCmd );UpdateWindow( hWnd );// 消息循环MSG msg;while ( GetMessage( &msg, NULL, 0, 0 ) ){TranslateMessage( &msg );DispatchMessage( &msg );}return msg.wParam;}

4、HelloATLWnd.h

#include <atlwin.h>class CHelloATLWnd : public CWindowImpl< CHelloATLWnd, CWindow, CWinTraits< WS_OVERLAPPEDWINDOW > >{public:CHelloATLWnd(){CWndClassInfo& wci     = GetWndClassInfo();wci.m_bSystemCursor    = TRUE;wci.m_lpszCursorID     = IDC_ARROW;wci.m_wc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH );wci.m_wc.hIcon         = LoadIcon( NULL, IDI_APPLICATION );}public:DECLARE_WND_CLASS( _T("HelloATL") )public:BEGIN_MSG_MAP( CHelloATLWnd )MESSAGE_HANDLER( WM_DESTROY, OnDestroy )MESSAGE_HANDLER( WM_PAINT, OnPaint )END_MSG_MAP()public:LRESULT OnDestroy( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& hHandled ){::PostQuitMessage( 0 );return 0;}LRESULT OnPaint( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& hHandled ){HDC hdc;PAINTSTRUCT ps;hdc = BeginPaint( &ps );DrawText( hdc, _T("Hello, ATL!"), -1, &ps.rcPaint, DT_CENTER | DT_VCENTER | DT_SINGLELINE );EndPaint( &ps );return 0;}};

Main.cpp

#include <atlbase.h>#include "HelloATLWnd.h"CComModule _Module;int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd ){_Module.Init( NULL, hInstance );// 创建窗口CHelloATLWnd wnd;wnd.Create( NULL, CHelloATLWnd::rcDefault, _T("Hello ATL") );wnd.ShowWindow( nShowCmd );wnd.UpdateWindow();// 消息循环MSG msg;while ( GetMessage( &msg, NULL, 0, 0 ) ){TranslateMessage( &msg );DispatchMessage( &msg );}_Module.Term();return msg.wParam;}



原创粉丝点击