• windows类型


    _IN_ 输入型参数  _OUT_ 输出型参数

    typedef unsigned long DWORD;//double word
    typedef int BOOL;//因为cpu原因4字节的int运行比较快,所以改为int型
    typedef unsigned char BYTE;//一个字节
    typedef unsigned short WORD;//两个字节表示一个字
    typedef float FLOAT;
    typedef FLOAT *PFLOAT;//P表示指针
    typedef BOOL near *PBOOL;//near和far区别在于,near中P代表指针是新版的表示方法,far是旧版的表示方法为LP
    typedef BOOL far *LPBOOL;
    typedef BYTE near *PBYTE;
    typedef BYTE far *LPBYTE;
    typedef int near *PINT;
    typedef int far *LPINT;
    typedef WORD near *PWORD;
    typedef WORD far *LPWORD;
    typedef long far *LPLONG;
    typedef DWORD near *PDWORD;
    typedef DWORD far *LPDWORD;
    typedef void far *LPVOID;
    typedef CONST void far *LPCVOID;//C表示const

    #define MAKEWORD(a, b) ((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8))

    将两个单字节变量合成一个双字节的变量并返回,例如MAKEWORD(1234,4567);MAKEWORD会通过将1234和4567进行&0xff将大于一个字节的部分去掉,再通过移位和|操作将两个数合成一个双字节变量,

    可以看出MAKEWORD(a,b),b为高位,为低位
    #define MAKELONG(a, b) ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))

    和上面的大致相同
    #define LOWORD(l) ((WORD)(((DWORD_PTR)(l)) & 0xffff))

    拆分4个字节的变量l 拆分成word型,并返回其中的地位 
    #define HIWORD(l) ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))

    和上面的相同,这次返回高位
    #define LOBYTE(w) ((BYTE)(((DWORD_PTR)(w)) & 0xff))

    #define HIBYTE(w) ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))

    和上面的大致相同只是拆分的变量变为word型,拆成byte型

  • 相关阅读:
    [Windows] 一些简单的CMD命令
    开发过程中用到的触发器
    MyEclipse8.5配置struts等框架
    Java编程中中文乱码问题的研究及解决方案
    开源的SSH框架优缺点分析
    java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序
    html,CSS文字大小单位px、em、pt的关系换算
    HTML常用标签参考学习
    匹配中文字符的正则表达式
    Oracle 取上周一到周末的sql
  • 原文地址:https://www.cnblogs.com/ma77045728/p/7009374.html
Copyright © 2020-2023  润新知