Page 251~254 Win32 GUI项目,第二次分析

2024-02-08 01:44

本文主要是介绍Page 251~254 Win32 GUI项目,第二次分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

11行,本程序要创建的窗口的窗口过程(回调函数),就是窗口用于处理消息的过程,返回值的类型是一个宏定义,即LRESULT,当操作系统分派消息给本窗口时,回调此函数,处理消息。

14行,使用全局变量定义一个窗口类名字

四个参数的含义分别是

21行,声明窗口的句柄

22行,声明一个操作做系统传递给窗口的消息结构体

23行,声明一个窗口类的对象wincl(仍然是类)

26~40行,初始化窗口类对象的各个成员的值。其中28行,表明了,处理本窗口类wincl的消息的函数是WindowProcedure

43行,箱操作系统注册这个窗口类,相当于告诉操作系统,我要用“CodeBlocksWindowsApp"命名来创建一个窗口,这个窗口的消息都传递给WindowProcedure这个函数

窗口类已经注册到到操作系统了,

47~60行,创建蹦窗口,返回本窗口的句柄hwnd。

63行,把窗口展示出来,入参是窗口的句柄,和一个命令(WinMain函数的参数)

66~71行,消息循环,

GetMessage源源不断地获取属于当前进程的消息,

然后通过TranslateMessage做必要的转换,

再调用DispatchMessage将它们正确地分派给本进程内的窗口,然后窗口再发给本窗口的回调函数WindowProcedure

75行,返回消息的处理结果

81行,窗口过程函数

83行,根据操作系统发来的消息,对消息进行分类

85行,如果发来的消息是一个WM_DESTROY(窗口销毁消息),则调用PostQuitMessage (0),关闭窗口,然后退出switch

88行,如果发来的消息没有对应的处理方法,则采用默认处理方法,不处理。

所以,我们写GUI程序,首先应该在83~90行的switch / case循环中,添加我们想收到,想处理的消息类型,再写该消息的处理方法。

最后,再看一眼,窗口处理过程函数WindowProcedure的四个入参的意义:

窗口运行效果如下:

这篇关于Page 251~254 Win32 GUI项目,第二次分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/689568

相关文章

Nginx错误拦截转发 error_page的问题解决

《Nginx错误拦截转发error_page的问题解决》Nginx通过配置错误页面和请求处理机制,可以在请求失败时展示自定义错误页面,提升用户体验,下面就来介绍一下Nginx错误拦截转发error_... 目录1. 准备自定义错误页面2. 配置 Nginx 错误页面基础配置示例:3. 关键配置说明4. 生效

Springboot请求和响应相关注解及使用场景分析

《Springboot请求和响应相关注解及使用场景分析》本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam... 目录1. 请求处理注解@RequestMapping@GetMapping, @PostMappin

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里