Archive for 7月 3rd, 2012
-
Hello, Win32 GUI(ATL) World!
Posted on 7月 3rd, 2012 by cx20
Win32 GUI(ATL)
Win32 アプリケーションは Windows 標準 API である Win32 API を使用した Windows アプリケーションである。
以下は VC++(ATL) における Win32 GUI アプリケーション の例となっている。ソースコード
#include <atlbase.h> #include <atlwin.h> class CHelloWindow : public CWindowImpl<CHelloWindow> { BEGIN_MSG_MAP( CHelloWindow ) MESSAGE_HANDLER( WM_PAINT, OnPaint ) MESSAGE_HANDLER( WM_DESTROY, OnDestroy ) END_MSG_MAP() LRESULT OnPaint( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) { PAINTSTRUCT ps; HDC hDC = GetDC(); LPCTSTR lpszMessage = _T("Hello, Win32 GUI(C++) World!"); BeginPaint( &ps ); TextOut( hDC, 0, 0, lpszMessage, lstrlen(lpszMessage) ); EndPaint( &ps ); return 0; } LRESULT OnDestroy( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) { PostQuitMessage( 0 ); return 0; } }; CComModule _Module; int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow ) { _Module.Init(NULL, hInstance); CHelloWindow wnd; wnd.Create( NULL, CWindow::rcDefault, _T("Hello, World!"), WS_OVERLAPPEDWINDOW | WS_VISIBLE ); wnd.ResizeClient( 640, 480 ); MSG msg; while( GetMessage( &msg, NULL, 0, 0 ) ){ TranslateMessage( &msg ); DispatchMessage( &msg ); } _Module.Term(); return msg.wParam; }
コンパイル方法
C:¥> cl hello.cpp
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Win32 GUI(ATL) World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+