首先简单介绍一下什么是win32
- win32就是基于window系统的窗口应用程序,和控制台程序。
- 在这里分享的都是win32的窗口应用程序
前文
在开始之前需要先说明一下什么是句柄,什么是预处理,什么是宏,头文件,源文件,以及这些文件的区别等,本章主要介绍的就是一些定义。
句柄
- 数值上,是一个32位无符号整型值(32位系统下);逻辑上,相当于指针的指针;形象理解上,是Windows中各个对象的一个唯一的、固定不变的ID;作用上,Windows使用句柄来标识诸如窗口、位图、画笔等对象,并通过句柄找到这些对象。
预处理
这些在编译之前对源文件进行简单加工的过程,就称为预处理(即预先处理、提前处理)。预处理主要是处理以#开头的命令
- 而且一般都放在源文件代码的最前面
- 预处理是C语言的一个重要功能,由预处理程序完成。当对一个源文件进行编译时,系统将自动调用预处理程序对源程序中 的预处理部分作处理,处理完毕自动进入对源程序的编译。
头文件
- 在项目中表现为.h结尾的文件,内含函数声明、宏定义、结构体定义等内容.c文件是程序文件,内含函数实现,变量定义等内容。
源文件
- 可以理解为一个纯文本文件,存放某种语言的代码,一般源文件 会根据相应的脚本语言的后缀,如c后缀.c ,c++的后缀.cpp
头文件和源文件之间的关系
在了解两者之间的关系的时候我们首先需要知道编译器的大致编译过程
- 预处理阶段
- 语法与语法分析阶段
- 编译阶段:首先代码编辑器首先会将c/c++编译成纯汇编语言,之后再将汇编语言转换成计算机可以识别的二进制码,生成各个目标文件(.obj文件)
- 连接阶段:将各个目标文件中的各段代码进行绝对地址定位,生成特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式(生成.exe文件)
注意:编译器在编译的时候是以c文件问单位进行的。如果你的项目没有一个c文件的化,那么你的项目将无法编译。
正文
windows程序的入口函数
int WINAPI WinMain(
_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPSTR lpCmdLine,
_In_ int nShowCmd);
winmain四个主函数的
-
HINSTANCE hinstance 表示应用程序当前的实例句柄,在windows程序中句柄无非就是一个数值
-
HINSTANCE hPrevInstance,表示应用程序上一个实例的句柄。
-
LPSTR lpCmdLine,指向应用程序命令行参数字符串的指针,不包括可执行文件名。
-
int nCmdShow,指定应用程序最初如何显示,例如在任务栏上正常显示、最大化到全屏显示或最小化显示。
结尾
本文主要介绍的就是cwin32里面的一些概念,并对这些概念纪念性了一些解析和汇总。
笔者也是初学者,也会有很多的疑惑,但是我都会记录出来以供自己和大家参考。希望大家可以一起学习进步。