Windows API中的数据结构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows API中的数据结构相关的知识,希望对你有一定的参考价值。

值得说明的是,win32开发是C语言编程,因此,搞明白数据类型还是非常重要的。Windows API因为历史原因或者为了方便在windows.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表示结尾为”\0”的字符串
  • 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可以用。

以上是关于Windows API中的数据结构的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Windows 8.1 加速计 API 在设备静止时不输出数据?

Windows 性能监视器API

Windows 性能监视器API

Windows 性能监视器API

Windows 性能监视器API

Windows API 中的不间断线程部分