VS2013 + Win8.1 创建的Win32 SDK程序模板

  1 // simpleMFC.cpp : 定义应用程序的入口点。
  2 //
  3 
  4 #include "stdafx.h"
  5 #include "simpleMFC.h"
  6 
  7 #define MAX_LOADSTRING 100
  8 
  9 // 全局变量: 
 10 HINSTANCE hInst;                                // 当前实例
 11 TCHAR szTitle[MAX_LOADSTRING];                    // 标题栏文本
 12 TCHAR szWindowClass[MAX_LOADSTRING];            // 主窗口类名
 13 
 14 // 此代码模块中包含的函数的前向声明: 
 15 ATOM                MyRegisterClass(HINSTANCE hInstance);
 16 BOOL                InitInstance(HINSTANCE, int);
 17 LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
 18 INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
 19 
 20 int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
 21                      _In_opt_ HINSTANCE hPrevInstance,
 22                      _In_ LPTSTR    lpCmdLine,
 23                      _In_ int       nCmdShow)
 24 {
 25     UNREFERENCED_PARAMETER(hPrevInstance);
 26     UNREFERENCED_PARAMETER(lpCmdLine);
 27 
 28      // TODO:  在此放置代码。
 29     MSG msg;
 30     HACCEL hAccelTable;
 31 
 32     // 初始化全局字符串
 33     LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
 34     LoadString(hInstance, IDC_SIMPLEMFC, szWindowClass, MAX_LOADSTRING);
 35     MyRegisterClass(hInstance);
 36 
 37     // 执行应用程序初始化: 
 38     if (!InitInstance (hInstance, nCmdShow))
 39     {
 40         return FALSE;
 41     }
 42 
 43     hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_SIMPLEMFC));
 44 
 45     // 主消息循环: 
 46     while (GetMessage(&msg, NULL, 0, 0))
 47     {
 48         if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
 49         {
 50             TranslateMessage(&msg);
 51             DispatchMessage(&msg);
 52         }
 53     }
 54 
 55     return (int) msg.wParam;
 56 }
 57 
 58 
 59 
 60 //
 61 //  函数:  MyRegisterClass()
 62 //
 63 //  目的:  注册窗口类。
 64 //
 65 ATOM MyRegisterClass(HINSTANCE hInstance)
 66 {
 67     WNDCLASSEX wcex;
 68 
 69     wcex.cbSize = sizeof(WNDCLASSEX);
 70 
 71     wcex.style            = CS_HREDRAW | CS_VREDRAW;
 72     wcex.lpfnWndProc    = WndProc;
 73     wcex.cbClsExtra        = 0;
 74     wcex.cbWndExtra        = 0;
 75     wcex.hInstance        = hInstance;
 76     wcex.hIcon            = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SIMPLEMFC));
 77     wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
 78     wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
 79     wcex.lpszMenuName    = MAKEINTRESOURCE(IDC_SIMPLEMFC);
 80     wcex.lpszClassName    = szWindowClass;
 81     wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 82 
 83     return RegisterClassEx(&wcex);
 84 }
 85 
 86 //
 87 //   函数:  InitInstance(HINSTANCE, int)
 88 //
 89 //   目的:  保存实例句柄并创建主窗口
 90 //
 91 //   注释: 
 92 //
 93 //        在此函数中,我们在全局变量中保存实例句柄并
 94 //        创建和显示主程序窗口。
 95 //
 96 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
 97 {
 98    HWND hWnd;
 99 
100    hInst = hInstance; // 将实例句柄存储在全局变量中
101 
102    hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
103       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
104 
105    if (!hWnd)
106    {
107       return FALSE;
108    }
109 
110    ShowWindow(hWnd, nCmdShow);
111    UpdateWindow(hWnd);
112 
113    return TRUE;
114 }
115 
116 //
117 //  函数:  WndProc(HWND, UINT, WPARAM, LPARAM)
118 //
119 //  目的:    处理主窗口的消息。
120 //
121 //  WM_COMMAND    - 处理应用程序菜单
122 //  WM_PAINT    - 绘制主窗口
123 //  WM_DESTROY    - 发送退出消息并返回
124 //
125 //
126 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
127 {
128     int wmId, wmEvent;
129     PAINTSTRUCT ps;
130     HDC hdc;
131 
132     switch (message)
133     {
134     case WM_COMMAND:
135         wmId    = LOWORD(wParam);
136         wmEvent = HIWORD(wParam);
137         // 分析菜单选择: 
138         switch (wmId)
139         {
140         case IDM_ABOUT:
141             DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
142             break;
143         case IDM_EXIT:
144             DestroyWindow(hWnd);
145             break;
146         default:
147             return DefWindowProc(hWnd, message, wParam, lParam);
148         }
149         break;
150     case WM_PAINT:
151         hdc = BeginPaint(hWnd, &ps);
152         // TODO:  在此添加任意绘图代码...
153         EndPaint(hWnd, &ps);
154         break;
155     case WM_DESTROY:
156         PostQuitMessage(0);
157         break;
158     default:
159         return DefWindowProc(hWnd, message, wParam, lParam);
160     }
161     return 0;
162 }
163 
164 // “关于”框的消息处理程序。
165 INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
166 {
167     UNREFERENCED_PARAMETER(lParam);
168     switch (message)
169     {
170     case WM_INITDIALOG:
171         return (INT_PTR)TRUE;
172 
173     case WM_COMMAND:
174         if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
175         {
176             EndDialog(hDlg, LOWORD(wParam));
177             return (INT_PTR)TRUE;
178         }
179         break;
180     }
181     return (INT_PTR)FALSE;
182 }

头文件stdafx.h

 1 // stdafx.h : 标准系统包含文件的包含文件,
 2 // 或是经常使用但不常更改的
 3 // 特定于项目的包含文件
 4 //
 5 
 6 #pragma once
 7 
 8 #include "targetver.h"
 9 
10 #define WIN32_LEAN_AND_MEAN             //  从 Windows 头文件中排除极少使用的信息
11 // Windows 头文件: 
12 #include <windows.h>
13 
14 // C 运行时头文件
15 #include <stdlib.h>
16 #include <malloc.h>
17 #include <memory.h>
18 #include <tchar.h>
19 
20 
21 // TODO:  在此处引用程序需要的其他头文件

 

posted @ 2015-01-20 11:14  boyang987  阅读(554)  评论(0编辑  收藏  举报