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