《Windows程序设计》第一天

Windows工作原理的中心思想就是“动态链接”概念。Windows本身有很多定义在动态链接库里卖弄的函数,他们存在于system或system32子目录下。

早期的Windows大部分只是实现了三个动态链接库,分别是内核,用户,GDI。分别对应于kernel32 user GDI三个动态链接库。
其中内核实现的是内存管理 文件输入输出 任务管理等
用户 则是窗口管理 界面
GDI 图形设备接口等

c语言的库函数最终链接时会放在程序代码中,而Windows动态链接库时放在程序之外的dll文件中。
Windows程序运行的时候,通过一个叫动态链接的进程与Windows连接。其中每个Windows的可执行文件包含他所用的动态链接库中的函数的引用地址。当程序被分配内存并装入的时候,这些引用地址直接解析成指向dll函数入口的指针。同时被调用的函数也会被装入内存。

链接Windows程序生成可执行文件时候,一个叫 导入库 的表非常重要,里面存在着需要导入库的名称以及引用信息。

下面引入第一个win32 api程序。

#include <windows.h>


int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     MessageBox (NULL, TEXT ("我是青青草原小绵羊"), TEXT ("逆向小绵羊"), 0) ;

     return 0 ;
}

winapi 这个是个宏定义,是_stdcall 函数调用约定规则 是由被调函数实现栈平衡。
windows程序主函数是winmain 其中第一个参数是句柄,这个值标识着这个程序,第二个参数可以用来查看是否有其他实例还在运行,但是现在很少用了,一般为null。第三个参数是运行命令字串 第四个是窗口最初显示方式,正常 最大化 最小化 全屏。

其次来谈一下 预编译的事情
在这里插入图片描述
我也是疑惑在为什么要添加这个头文件,我查了查就明白了其中的原因,为了提高编译速度。
如果说每个源文件都要添加重复的头文件的话,那么会重复引入头文件,这个时候会导致编译变慢。这点我是清楚的,但是看到解释中的mfc时,我就想为什么我直接用win32 api编程还需要呢,原来是我的编译器的设定问题,可以通过项目-》项目属性-》预编译头来选择预编译头文件或者直接取消。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值