[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月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
48 4
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
126 3
|
4月前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
119 0
|
14天前
|
JSON JavaScript 中间件
Koa框架下的RESTful API设计与实现
在现代 Web 开发中,构建高效、可维护的 API 是至关重要的。Koa 是一个流行的 Node.js Web 应用框架,它具有简洁、灵活和强大的特性,非常适合用于设计和实现 RESTful API。
|
20天前
|
API PHP 数据库
PHP中哪个框架最适合做API?
在数字化时代,API作为软件应用间通信的桥梁至关重要。本文探讨了PHP中适合API开发的主流框架,包括Laravel、Symfony、Lumen、Slim、Yii和Phalcon,分析了它们的特点和优势,帮助开发者选择合适的框架,提高开发效率、保证接口稳定性和安全性。
41 3
|
27天前
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
39 4
|
20天前
|
安全 API 网络架构
Python中哪个框架最适合做API?
本文介绍了Python生态系统中几个流行的API框架,包括Flask、FastAPI、Django Rest Framework(DRF)、Falcon和Tornado。每个框架都有其独特的优势和适用场景。Flask轻量灵活,适合小型项目;FastAPI高性能且自动生成文档,适合需要高吞吐量的API;DRF功能强大,适合复杂应用;Falcon高性能低延迟,适合快速API开发;Tornado异步非阻塞,适合高并发场景。文章通过示例代码和优缺点分析,帮助开发者根据项目需求选择合适的框架。
49 0
|
2月前
|
数据采集 人工智能 自然语言处理
Python实时查询股票API的FinanceAgent框架构建股票(美股/A股/港股)AI Agent
金融领域Finance AI Agents方面的工作,发现很多行业需求和用户输入的 query都是和查询股价/行情/指数/财报汇总/金融理财建议相关。如果需要准确的 金融实时数据就不能只依赖LLM 来生成了。常规的方案包括 RAG (包括调用API )再把对应数据和prompt 一起拼接送给大模型来做文本生成。稳定的一些商业机构的金融数据API基本都是收费的,如果是以科研和demo性质有一些开放爬虫API可以使用。这里主要介绍一下 FinanceAgent,github地址 https://github.com/AI-Hub-Admin/FinanceAgent
|
3月前
|
JSON Go API
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
|
3月前
|
开发框架 JSON 缓存
震撼发布!Python Web开发框架下的RESTful API设计全攻略,让数据交互更自由!
在数字化浪潮推动下,RESTful API成为Web开发中不可或缺的部分。本文详细介绍了在Python环境下如何设计并实现高效、可扩展的RESTful API,涵盖框架选择、资源定义、HTTP方法应用及响应格式设计等内容,并提供了基于Flask的示例代码。此外,还讨论了版本控制、文档化、安全性和性能优化等最佳实践,帮助开发者实现更流畅的数据交互体验。
90 1