首页 > 代码库 > WIN32-ATL
WIN32-ATL
1 #include "stdafx.h" 2 #include "ATLWinTest.h" 3 4 #define MAX_LOADSTRING 100 5 6 // 全局变量: 7 /*HINSTANCE hInst; */ // 全局HINSTANCE接口 8 TCHAR szTitle[MAX_LOADSTRING]; // 窗口标题栏 9 TCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名 10 11 //ATOM MyRegisterClass(HINSTANCE hInstance); 12 //BOOL InitInstance(HINSTANCE, int); 13 //LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 14 INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); 15 CComModule _Module; 16 17 class CMainWindow : public CWindowImpl<CMainWindow> 18 { 19 public: 20 CMainWindow() 21 { 22 CWndClassInfo& wci = GetWndClassInfo(); 23 if(!wci.m_atom) 24 { 25 wci.m_wc.hIcon = LoadIcon(_Module.GetResourceInstance(), 26 MAKEINTRESOURCE(IDI_ATLWINTEST)); 27 wci.m_wc.hIconSm=(HICON)::LoadImage(_Module.GetResourceInstance(), 28 MAKEINTRESOURCE(IDI_SMALL), 29 IMAGE_ICON,16,16,LR_DEFAULTCOLOR); 30 wci.m_wc.hbrBackground=CreateHatchBrush(HS_DIAGCROSS,RGB(0,0,255)); 31 // 装载系统光标 32 wci.m_bSystemCursor = TRUE; 33 wci.m_lpszCursorID = IDC_CROSS; 34 } 35 } 36 virtual BOOL ProcessWindowMessage(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT &lResult,DWORD dwMsgMapID) 37 { 38 BOOL bHandled = TRUE; 39 switch(uMsg) 40 { 41 case WM_PAINT: 42 lResult = OnPaint(); 43 break; 44 case WM_DESTROY: 45 lResult = OnDestroy(); 46 break; 47 default: 48 bHandled = FALSE; 49 break; 50 } 51 return bHandled; 52 } 53 private: 54 LRESULT OnPaint() 55 { 56 PAINTSTRUCT ps; 57 HDC hdc = BeginPaint(&ps); 58 RECT rect; 59 GetClientRect(&rect); 60 DrawText(hdc,_T("Hello,Windows"),-1,&rect, 61 DT_CENTER|DT_VCENTER|DT_SINGLELINE); 62 EndPaint(&ps); 63 return 0; 64 } 65 LRESULT OnDestroy() 66 { 67 PostQuitMessage(0); 68 return 0; 69 } 70 }; 71 72 int APIENTRY _tWinMain(HINSTANCE hInstance, 73 HINSTANCE hPrevInstance, 74 LPTSTR lpCmdLine, 75 int nCmdShow) 76 { 77 _Module.Init(0,hInstance); 78 79 UNREFERENCED_PARAMETER(hPrevInstance); 80 UNREFERENCED_PARAMETER(lpCmdLine); 81 82 MSG msg; 83 HACCEL hAccelTable; 84 85 //// グローバル文字列を初期化しています。 86 LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); 87 LoadString(hInstance, IDC_ATLWINTEST, szWindowClass, MAX_LOADSTRING); 88 //MyRegisterClass(hInstance); 89 90 // アプリケーションの初期化を実行します: 91 //if (!InitInstance (hInstance, nCmdShow)) 92 //{ 93 // return FALSE; 94 //} 95 96 // ① 97 //CWindow wnd; 98 //wnd.Create(szWindowClass,0,CWindow::rcDefault, 99 //_T("Windows Application"),100 //WS_OVERLAPPEDWINDOW,WS_EX_CLIENTEDGE);101 //if(!wnd)102 // return -1;103 //wnd.CenterWindow();104 //wnd.ShowWindow(nCmdShow);105 //wnd.UpdateWindow();106 107 //②108 CMainWindow wnd;109 wnd.Create(0,CWindow::rcDefault,_T("Windows Application"),110 WS_OVERLAPPEDWINDOW,WS_EX_CLIENTEDGE);111 if(!wnd)112 return -1;113 wnd.CenterWindow();114 wnd.ShowWindow(nCmdShow);115 wnd.UpdateWindow();116 117 hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_ATLWINTEST));118 119 // メイン メッセージ ループ:120 while (GetMessage(&msg, NULL, 0, 0))121 {122 if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))123 {124 TranslateMessage(&msg);125 DispatchMessage(&msg);126 }127 }128 129 _Module.Term();130 131 return (int) msg.wParam;132 }133 134 135 136 //137 // 関数: MyRegisterClass()138 //139 // 目的: ウィンドウ クラスを登録します。140 //141 // コメント:142 //143 // この関数および使い方は、‘RegisterClassEx‘ 関数が追加された144 // Windows 95 より前の Win32 システムと互換させる場合にのみ必要です。145 // アプリケーションが、関連付けられた146 // 正しい形式の小さいアイコンを取得できるようにするには、147 // この関数を呼び出してください。148 //149 //ATOM MyRegisterClass(HINSTANCE hInstance)150 //{151 // WNDCLASSEX wcex;152 //153 // wcex.cbSize = sizeof(WNDCLASSEX);154 //155 // wcex.style = CS_HREDRAW | CS_VREDRAW;156 // wcex.lpfnWndProc = WndProc;157 // wcex.cbClsExtra = 0;158 // wcex.cbWndExtra = 0;159 // wcex.hInstance = hInstance;160 // wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ATLWINTEST));161 // wcex.hCursor = LoadCursor(NULL, IDC_ARROW);162 // wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);163 // wcex.lpszMenuName = MAKEINTRESOURCE(IDC_ATLWINTEST);164 // wcex.lpszClassName = szWindowClass;165 // wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));166 //167 // return RegisterClassEx(&wcex);168 //}169 170 //171 // 関数: InitInstance(HINSTANCE, int)172 //173 // 目的: インスタンス ハンドルを保存して、メイン ウィンドウを作成します。174 //175 // コメント:176 //177 // この関数で、グローバル変数でインスタンス ハンドルを保存し、178 // メイン プログラム ウィンドウを作成および表示します。179 //180 //BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)181 //{182 // HWND hWnd;183 //184 // hInst = hInstance; // グローバル変数にインスタンス処理を格納します。185 //186 // hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,187 // CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);188 //189 // if (!hWnd)190 // {191 // return FALSE;192 // }193 //194 // ShowWindow(hWnd, nCmdShow);195 // UpdateWindow(hWnd);196 //197 // return TRUE;198 //}199 200 //201 // 関数: WndProc(HWND, UINT, WPARAM, LPARAM)202 //203 // 目的: メイン ウィンドウのメッセージを処理します。204 //205 // WM_COMMAND - アプリケーション メニューの処理206 // WM_PAINT - メイン ウィンドウの描画207 // WM_DESTROY - 中止メッセージを表示して戻る208 //209 //210 //LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)211 //{212 // int wmId, wmEvent;213 // PAINTSTRUCT ps;214 // HDC hdc;215 // CWindow wnd(hWnd);216 // RECT rect;217 //218 // switch (message)219 // {220 // case WM_COMMAND:221 // wmId = LOWORD(wParam);222 // wmEvent = HIWORD(wParam);223 // // 選択されたメニューの解析:224 // switch (wmId)225 // {226 // case IDM_ABOUT:227 // DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);228 // break;229 // case IDM_EXIT:230 // DestroyWindow(hWnd);231 // break;232 // default:233 // return DefWindowProc(hWnd, message, wParam, lParam);234 // }235 // break;236 // case WM_PAINT:237 // //hdc = BeginPaint(hWnd, &ps);238 // //// TODO: 描画コードをここに追加してください...239 // //EndPaint(hWnd, &ps);240 // hdc = wnd.BeginPaint(&ps);241 // wnd.GetClientRect(&rect);242 // DrawText(hdc,_T("Hello,Windows"),-1,&rect,243 // DT_CENTER|DT_VCENTER|DT_SINGLELINE);244 // wnd.EndPaint(&ps);245 // break;246 // case WM_DESTROY:247 // PostQuitMessage(0);248 // break;249 // default:250 // return DefWindowProc(hWnd, message, wParam, lParam);251 // }252 // return 0;253 //}254 255 // バージョン情報ボックスのメッセージ ハンドラです。256 //INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)257 //{258 // UNREFERENCED_PARAMETER(lParam);259 // switch (message)260 // {261 // case WM_INITDIALOG:262 // return (INT_PTR)TRUE;263 //264 // case WM_COMMAND:265 // if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)266 // {267 // EndDialog(hDlg, LOWORD(wParam));268 // return (INT_PTR)TRUE;269 // }270 // break;271 // }272 // return (INT_PTR)FALSE;273 //}
WIN32-ATL
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。