一、
简单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; }
#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; }
#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; } };
#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; }