我为什么选择Win32SDK以及Win32SDK的特点
来源:互联网 发布:通信工程学java有用吗 编辑:程序博客网 时间:2024/05/17 01:44
玩Win32SDK已有一段时间内,从初中的时候就开始了,虽然时间紧,就假期里或插空背着父母玩会,但是两三年下来,收获也是不浅。所以就想着把我学的东西都整理下来,算是纪念吧,如果还能帮助一下别人,也是我的幸运。
初中的时候对计算机感兴趣,学过C语言,对黑窗口厌烦了,就想着做Windows窗口程序,当时还没有研究过C++的高级特性,于是无缘MFC,对C#那种解释性的语言毫无兴趣,至于VB,都学C了想必谁也不愿意学VB(习惯了C的灵活性),F#就更不用说了,当时根本就不知道有F#。-_-||
所以,我开始和Win32SDK打交道,学着学着,我猛然发现,通过Win32SDK,我可以在Windows上做太多我愿意做的事情!甚至我可以替换Win32子系统用户模式下大部分“系统程序”。在很多老前辈写的文章和MSDN的文档的帮助下,我对Win32SDK越来越深入。。。
Win32SDK大致的工作原理如图(画的不好。。)
总结Win32SDK的一些特点和主意事项:
1。高效性,因为Win32SDK比MFC等要更底层,他体现了一种直接与系统交流的特性,因此他的效率高。
2。灵活性,Win32SDK本质就是调用Win32API,微软提供了丰富的API,就像我上文说的 :通过Win32SDK,我可以在Windows上做太多我愿意做的事情!甚至我可以替换Win32子系统用户模式下大部分“系统程序”。
但是Win32SDK也有他本身的缺陷,因为他更底层,所以他相对MFC,C#都要复杂,麻烦,而且资料虽多但都太散,往往为一件事翻很多文章。
Win32SDK本质是调用Win32API,在Intel 80x86 CPU工作下的Windows系统(俗称32位Windows系统),API都是__stdcall的,stdcall是一种函数调用约定,Win32API其实就是函数,stdcall的特点是实参从右往左入栈,被调用者以ret@number返回,返回时已平衡堆栈,因此调用者不需要手动清栈。CALLBACK,WINAPI,APIENTRY等宏都是__stdcall。
(注:64位Windows下(x86-64CPU下,比如ia32e,amd64)64位程序采用fastcall调用约定,32位程序(WOW64)依旧采用stdcall,微软这么做是为了兼容32位的程序)
大多数和字符串有关的API都提供了两个版本,比如MessageBoxA和MessageBoxW,这个和编码有关,一个是用的Ansi编码,一个用的Unicode编码,有关这个问题,我会在下一篇中详细解释。
- 我为什么选择Win32SDK以及Win32SDK的特点
- 关于win32sdk的timer
- Win32SDK应用程序
- win32sdk计算器
- Win32SDK基本 RC资源的使用
- Win32SDK编辑框控件的简单操作
- win32SDK中使用图片的api
- C下WIN32SDK进度条
- WIN32SDK自绘Tooltip
- win32SDK窗口程序
- [Win32SDK基本]GetWindowRect/GetClientRect
- [Win32SDK基本] Combo Box
- Win32SDK对话框模板
- win32sdk学习-简单的创建一个自己的工具栏
- 一个基于Win32SDK写的超简单画图板
- win32sdk学习 richedit实现的一个简单记事本
- 提取VS的Win32SDk用C/C++编译器
- 关于CIPADDRESSCTRL在win32SDK中无法使用的问题
- System.getProperties
- Lucene 工作原理
- 软件开发的相关技术
- iOS AFNetWorking 数据解析
- ReactiveCocoa配置相关
- 我为什么选择Win32SDK以及Win32SDK的特点
- 从main函数启动过程说起
- 黑马程序员——面向对象---继承
- Oracle学习(十)之日志存档模式
- linux 内核编译:内核配置原理与常见配置问题的解决方法&&内核版本控制解析
- 异常 frameanimation ClassCastException/Android studio Error:Unable to start the daemon process
- iOS开发 动画 UIDynamicAnimator
- Libevent0.1学习之queue.h
- SNMP:简单网络管理协议