码迷,mamicode.com
首页 > Windows程序 > 详细

WIN32-ATL

时间:2015-01-05 18:17:07      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:

  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

标签:

原文地址:http://www.cnblogs.com/elitiwin/p/4204146.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!