当前位置: 首页 > news >正文

C win32基础学习(二)

上一篇我们已经介绍了关于窗口程序的一些基本知识。从本篇开始我们将正式进入C win32的学习中去。

正文

窗口创建过程

  • 定义WinMain函数

  • 定义窗口处理函数(自定义,处理消息)

  • 注册窗口类(向操作系统写入一些数据)

  • 创建窗口(内存中创建窗口)

  • 显示窗口(绘制窗口的图像)

  • 消息循环(获取/翻译/派发消息)

  • 消息处理

上一篇文章我们只是简单的了解了一下WinMain函数的写法。这次我们将深入的了解此函数

WinMain函数

在了解之前我们需要知道的是:什么是入口函数,它有什么作用?

入口函数:就是程序运行时候最开始调用的函数,具体来说,它指定编译器(或者其他类似工具)如何开始编译一个程序,因此用户现在可以在编译时运行一些预处理和初始化步骤。即使没有入口函数,一个项目也可以被编译器编译,但是没有入口函数,也不能使编译器进行任何必要的预处理和初始化步骤,并且编译后可能会有一些问题。

int WINAPI WinMain(_In_     HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_     LPSTR     lpCmdLine,_In_     int       nShowCmd);
  • HINSTANCE hinstance, 表示应用程序当前的实例句柄,在windows程序中句柄无非就是一个数值

  • HINSTANCE hPrevInstance,表示应用程序上一个实例的句柄。

  • LPSTR lpCmdLine,指向应用程序命令行参数字符串的指针,不包括可执行文件名。

  • int nCmdShow,指定应用程序最初如何显示,例如在任务栏上正常显示、最大化到全屏显示或最小化显示。

在上面我们可以看到WinMain 前有一个WINAPI ,那么这个WINAPI 是什么意思呢,接下来就介绍一下。

WINAPI 头文件中的定义如下:

#define CALLBACK    __stdcall
#define WINAPI      __stdcall
#define APIPRIVATE  __stdcall
#define PASCAL      __stdcall
#define APIENTRY    WINAPI

可以看出上面定义的宏 都指向了 _stdcall ,那么无问题来了什么是_stdcall

  • 是一种函数调用约定,也称为标准调用约定。
  • 函数调用约定描述函数参数的传递方式和由谁来平衡堆栈
  • 在程序中调用一个函数时,函数参数的传递是通过堆栈进行的,也就是说调用者把要传递给函数的参数压入堆栈,函数在执行过程中从堆栈中取出相应的参数使用。

结尾

在这里我们简单的介绍了什么是WinMain函数,之后的文章我们会依次介绍窗口创建过程的其他步骤。

http://www.lryc.cn/news/20337.html

相关文章:

  • 理论五:控制反转、依赖反转、依赖注入,这三者有何区别和联系?
  • 读书笔记//《数据分析之道》
  • 1个串口用1根线实现多机半双工通信+开机控制电路
  • KUKA机器人外部自动运行模式的相关信号配置
  • 【RabbitMQ笔记02】消息队列RabbitMQ七种模式之最简单的模式
  • Spring MVC 源码- RequestToViewNameTranslator 组件
  • Linux--TCP编程--0216 17
  • 关于设计模式的记录
  • Lambda-常见的函数式接口
  • P1196 [NOI2002] 银河英雄传说 带权并查集
  • 【项目实战】快来入门Groovy的基础语法吧
  • Mybatis中的动态SQL
  • VUE常用API
  • 25 openEuler管理网络-使用nmcli命令配置ip
  • 如何安装和使用A-ops工具?
  • MySql数据库环境部署
  • 极品笔记,阿里P7爆款《K8s+Jenkins》技术笔记,职场必备
  • 数据结构:各种排序方法的综合比较
  • 【设计模式】 策略模式介绍及C代码实现
  • 【数据库】第二章 关系数据库
  • oracle和mysql的分页
  • 深拷贝与浅拷贝的理解
  • Shell变量
  • Android 8请求权限时弹窗BUG
  • 路漫漫:网络空间的监管趋势
  • 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
  • 数据库的基本查询
  • 10 分钟把你的 Web 应用转为桌面端应用
  • Delphi RSA加解密(二)
  • pytorch 深度学习早停设置