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;}
- vc++ atl编程
- 初学者入门:一个COM/ATL简单项目 - VC编程
- VC++ 2008 Express和ATL、MFC、WTL编程
- vc ATL 外壳编程添加windows右键菜单
- VC ATL 控件开发
- VC ATL 添加按钮
- VC++ ATL 学习总结
- atl界面编程
- ATL编程初级教程
- ATL编程初级教程
- ATL编程初级教程
- ATL(VC6)编程初级教程
- ATL 服务编程 体会
- ATL编程初级教程
- ATL编程初级教程
- ATL编程总结
- VS2012 ATL编程步骤
- ATL编程初级教程
- 给代码审查者的几点建议
- 用户定义类型未定义
- jGestures: jQuery的手势事件插件
- Exported service does not require permission警告
- Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)
- vc++ atl编程
- SIP初步
- 强连通分量-Tarjin算法
- STL String 非常详细 的介绍
- ACCESS 数据库之窗体的用途及设计
- [.Net码农]BulkCopytoSQL做批量导入
- Objective-C 编程语言(7)关联
- Codeforces Round #196 (Div. 2) B. Routine Problem
- 字典树Trie算法