【win32_002】基本的win32程序框架、消息长什么样?程序编译过程

基本的win32程序框架

循环
RegisterClassExW
向系统注册窗口类
CreateWindowW
依据窗口类名字在内存中创建窗口
ShowWindow
设置指定窗口的显示状态
UpdateWindow
向窗口发送 WM_PAINT 消息
GetMessage
从调用线程的消息队列中取出1个消息
TranslateMessage
将虚拟key消息转换为字符消息
DispatchMessage
将消息调度到目的窗口过程函数
窗口处理函数

消息长什么样?

typedef struct tagMSG {
  HWND   hwnd;//其窗口过程接收消息的窗口的句柄。 当消息是线程消息时,此成员为 NULL 。
  UINT   message;//消息的标识符。 应用程序只能使用低字;高字由系统保留。
  WPARAM wParam;//关于消息的附加信息。 确切含义取决于 消息 成员的值。
  LPARAM lParam;//关于消息的附加信息。 确切含义取决于 消息 成员的值。
  DWORD  time;//消息的发布时间。
  POINT  pt;//发布消息时的光标位置(以屏幕坐标表示)。
  DWORD  lPrivate;//无说明
} MSG, *PMSG, *NPMSG, *LPMSG;

MAKEINTRESOURCEW

链接
将整数值转换为与资源管理功能兼容的资源类型。

UNREFERENCED_PARAMETER

UNREFERENCED_PARAMETER(hPrevInstance);//这个hPrevInstance参数我使用过了,别报警告了,仅此而已。

编译过程

预处理(*.i)

宏定义展开(例如#define 定义);
处理所有的条件编译指令,例如#ifdef、#ifndef、#endif等;
处理#include,将#include引用的文件插入该行;
删除所有注释;
添加行号和文件标识,这样在调试和编译出错的时候可以确定是哪个文件的哪一行。
预处理的过程并不会检查语法错误。

汇编(*.s)

汇编的过程会检查语法错误。

编译(*.obj)

编译过程就是将汇编文件生成目标文件的过程,在这个过程中会做一些优化处理。

链接(*.exe)

*.c用到了C标准库的printf函数,但是编译过程只是把源文件转换成二进制文件而已,这个二进制文件还不能直接执行,还需要把转换以后的二进制文件与要用到的库绑定链接到一起(实际上还会绑定其他对象,并做一些其他工作,在此不再深究)。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1615549892

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值