博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WIN32窗口模板
阅读量:4357 次
发布时间:2019-06-07

本文共 4882 字,大约阅读时间需要 16 分钟。

1 // WINATLTest.cpp : 定义应用程序的入口点。  2 //  3   4 #include "stdafx.h"  5 #include "WINATLTest.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_WINATLTEST, 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_WINATLTEST)); 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_WINATLTEST)); 77     wcex.hCursor        = LoadCursor(NULL, IDC_ARROW); 78     wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1); 79     wcex.lpszMenuName    = MAKEINTRESOURCE(IDC_WINATLTEST); 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 }
View Code

 

转载于:https://www.cnblogs.com/elitiwin/p/4204800.html

你可能感兴趣的文章
Flutter布局2--Align
查看>>
Flutter布局3-----Center
查看>>
Flutter布局4--Row
查看>>
Flutter布局5---Container
查看>>
Flutter布局----弹性布局 (Flex)
查看>>
简单算法考题记录
查看>>
Leetcode题解记录
查看>>
C++ 基本知识整理
查看>>
操作系统基本知识整理
查看>>
计算机网络基本知识整理
查看>>
C++进阶知识整理
查看>>
排序算法总结
查看>>
树 总结
查看>>
简易web服务器
查看>>
C++ 各类型转换及关键字
查看>>
剑指offer 题解记录
查看>>
js事件循环了解一下
查看>>
node中使用log4js4.x版本记录
查看>>
mybatis动态SQL
查看>>
mybatis环境搭建(eclipse,idea)
查看>>