[WinAPI] API 4 [注册][创建][消息][第一个框架类窗口]

简介:


 

首先注册了窗口类,然后创建了一个窗口,创建窗口时指定的窗口的属性和窗口消息的处理函数。函数消息的处理函数大多调用系统默认函数来处理。

 

 

复制代码
 1 #include<windows.h>
 2 
 3 /*全局变量*/
 4 HINSTANCE hinst;
 5 
 6 /*函数声明*/
 7 int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
 8 LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);
 9 
10 /*显示一个窗口*/
11 int WinMain(HINSTANCE hInstance,
12             HINSTANCE hPrevInstance,
13             LPSTR lpCmdLine,
14             int nCmdShow
15             )
16 {
17     WNDCLASSEX wcx;//窗口类
18     HWND hwnd;//窗口句柄
19     MSG msg;//消息
20     BOOL fGotMessage;//是否获取消息
21     hinst=hInstance;//应用程序实例句柄,保存为全局变量
22     //填充窗口的数据结构
23     wcx.cbSize=sizeof(wcx);//结构体的大小
24     wcx.style=CS_HREDRAW | CS_VREDRAW;//样式:大小改变时重绘界面
25     wcx.lpfnWndProc=MainWndProc;//消息处理函数
26     wcx.cbClsExtra=0;//不使用类内存
27     wcx.cbWndExtra=0;//不使用窗口内存
28     wcx.hInstance=hInstance;//所属应用程序的实例句柄
29     wcx.hIcon=LoadIcon(NULL,IDI_APPLICATION);//图标:默认
30     wcx.hCursor=LoadCursor(NULL,IDC_ARROW);//光标:默认
31     wcx.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//背景:白色
32     wcx.lpszMenuName=NULL;//菜单:不使用
33     wcx.lpszClassName="MainWClass";//窗口类名
34     wcx.hIconSm=(HICON)LoadImage(hInstance,
35         MAKEINTRESOURCE(5),
36         IMAGE_ICON,
37         GetSystemMetrics(SM_CXSMICON),
38         GetSystemMetrics(SM_CYSMICON),
39         LR_DEFAULTCOLOR);
40 
41     //注册窗口类
42     if(!RegisterClassEx(&wcx))
43     {
44         MessageBox(NULL,TEXT("注册窗口失败"),NULL,MB_OK);
45         return 1;
46     }
47 
48     //创建窗口
49     hwnd=CreateWindow(
50         "MainWClass",//window name
51         "CH 2-3",//window title
52         WS_OVERLAPPEDWINDOW,//窗口样式
53         CW_USEDEFAULT,//水平位置X:默认
54         CW_USEDEFAULT,//水平位置Y:默认
55         CW_USEDEFAULT,//width:默认
56         CW_USEDEFAULT,//high:默认
57         (HWND)NULL,//父窗口:无
58         (HMENU)NULL,//菜单:使用窗口类的菜单
59         hInstance,//应用程序实例句柄
60         (LPVOID)NULL);//窗口创建时数据:无
61     
62     if(!hwnd)
63     {
64         MessageBox(NULL,TEXT("创建窗口失败"),NULL,MB_OK);
65         return 1;
66     }
67     //显示窗口
68     ShowWindow(hwnd,nCmdShow);
69     UpdateWindow(hwnd);
70     //消息循环
71     while((fGotMessage=GetMessage(&msg,(HWND)NULL,0,0))!=0 && fGotMessage!=-1)
72     {
73         TranslateMessage(&msg);
74         DispatchMessage(&msg);
75     }
76     return msg.wParam;
77 }
78 /*MainWndProc****************************
79 *消息处理函数
80 *对所有消息采取默认处理函数
81 *****************************************/
82 LRESULT CALLBACK MainWndProc(HWND hwnd,
83                              UINT uMsg,
84                              WPARAM wParam,
85                              LPARAM lParam
86                              )
87 {
88     switch(uMsg)
89     {
90     case WM_DESTROY:
91         ExitThread(0);
92         return 0;
93     default:
94         return DefWindowProc(hwnd,uMsg,wParam,lParam);
95     }
96 }
复制代码


相关文章
|
2月前
|
API 数据库 数据安全/隐私保护
利用Django框架构建高效后端API服务
本文将介绍如何利用Django框架构建高效的后端API服务。通过深入分析Django框架的特性和优势,结合实际案例,探讨了如何利用Django提供的强大功能来构建高性能、可扩展的后端服务。同时,还对Django框架在后端开发中的一些常见问题进行了解决方案的探讨,并提出了一些建设性的建议。
64 3
|
5月前
|
Java Unix 程序员
java 8 新特性讲解Optional类--Fork/Join 框架--新时间日期API--以及接口的新特性和注解
java 8 新特性讲解Optional类--Fork/Join 框架--新时间日期API--以及接口的新特性和注解
62 1
|
8天前
|
数据采集 DataWorks 安全
DataWorks产品使用合集之在DataWorks数据服务中,生成API和注册API的主要区别如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
22 2
|
13天前
|
缓存 Java 程序员
|
13天前
|
安全 Java 程序员
|
13天前
|
Java 测试技术 API
Python的api自动测试选择合适的测试框架
【4月更文挑战第18天】在Python API自动测试中,选择合适的框架至关重要。常见的测试工具有unittest(集成度高,适合基础测试)、pytest(功能强大,支持插件扩展和高级功能)、requests-mock(用于HTTP请求模拟和断言)、rest-assured(针对RESTful API的简洁测试)以及allure-pytest(生成美观的测试报告)。选择时要考虑项目需求、团队熟悉度和社区支持。确保遵循良好测试实践,编写清晰、全面的测试用例。
10 2
|
27天前
|
JavaScript 前端开发 API
如何利用Python的Flask框架与Vue.js创建RESTful API服务
【4月更文挑战第10天】本文介绍了如何使用Flask和Vue.js创建一个前后端分离的RESTful API服务。Flask作为后端框架,负责提供CRUD操作,与SQLite数据库交互;Vue.js作为前端框架,构建用户界面并利用axios库与后端API通信。通过示例代码,展示了Flask设置路由处理用户数据以及Vue组件如何调用API获取和操作数据。此基础结构为构建更复杂的Web应用提供了起点。
|
4月前
|
API Python Windows
python3应用windows api对后台程序窗口及桌面截图并保存的方法
python3应用windows api对后台程序窗口及桌面截图并保存的方法
110 1
|
2月前
|
JSON Java API
Springboot项目中如何设计一个规范的统一的Restful API 响应框架?
Springboot项目中如何设计一个规范的统一的Restful API 响应框架?
25 1
|
2月前
|
XML JSON API
通过Flask框架创建灵活的、可扩展的Web Restful API服务
通过Flask框架创建灵活的、可扩展的Web Restful API服务