zoukankan      html  css  js  c++  java
  • Windows API中的数据结构

    值得说明的是,win32开发是C语言编程,因此,搞明白数据类型还是非常重要的。Windows API因为历史原因或者为了方便在WinUser.h中将一些数据类型用typedef或者define宏重新进行定义。

    • UINT表示C语言中的无符号整型unsigned int
    • PSTR表示字符串指针char *
    • WPARAM在16位时期的Windows中表示unsigned short int,而现在都是UINT
    • LPARAM表示long
    • WndProc函数的返回类型LRESULT实际上就是long
    • 入口函数WinMain被指定的WINAPI和WndProc被指定的CALLBACK都表示的是_stdcall,表示Windows和用户应用程序之间发生函数呼叫的参数传递方式。

    另外,句柄是Windows API中大量使用的一种类型,比如HINSTANCE, HWND, HDC, HICON, HCUROR, HBRUSH。它们其实是一个32位的整数,代表某种特定的对象。据我所知这东西似乎也是单任务时期Windows的遗留产物,把同一个程序的不同实例进行标记,从而可以在它们之前进行内存上的继承。

    Windows的变量遵从匈牙利表示法,用开头的小写字母表示变量的类型属性,比如:

    • szCmdLine中的sz表示结尾为””的字符串
    • hInstance和hPrevInstance开头的字母h表示句柄handle
    • iCmdShow的起始字母i表示整型

    而对于结构变量,比如MSG结构,就直接用msg表示;WNDCLASS结构wndclass; PaintStructure结构ps,等等。

    现在看看,Windows的确有值得学习的地方,能够用C语言建起一个系统内核和应用层,再通过其他的语言对Windows APIs进行封装,构建COM, ATL, MFC, .NET等等更高的不同层次的开发层。现在在Visual Studio2015居然还嵌入了Java SE development,一个平台就可以编写Desktop, Mobile Phone, Android, iOS程序。以前就听闻Windows是最疼惜程序员的平台,就是太贵,不过现在Visual Studio 2015有免费授权的社区版Lisence可以用。

  • 相关阅读:
    docker的核心概念、docker的安装与卸载
    centos 7 配置yum源
    杂记
    linux命令之rpm(软件的安装卸载)
    chrony服务及cobbler+pxe实现自动化装机
    sshd登录控制脚及本sudo权限设置
    selinux控制脚本、AWK应用、监控访问脚本实例
    排除GC引起的CPU飙高
    POI报表导入导出
    逆向学习之环境准备
  • 原文地址:https://www.cnblogs.com/make217/p/5234834.html
Copyright © 2011-2022 走看看