zoukankan      html  css  js  c++  java
  • 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型

  • 相关阅读:
    后端结对编程报告(2018.6.6)
    Burn Down Chart(2018.6.4~2018.6.10)
    C#多线程List的非线程安全性
    C#泛型参数多线程与复杂参数多线程
    Java学习之App开发公司手机端设想
    Java学习之SpringBoot整合SSM Demo
    Java学习之Mysql结构优化
    Java学习之Dubbo+ZooKeeper分布式服务Demo
    C# 面向切面编程--监控日志记录方案
    C# 通用类型转换方法
  • 原文地址:https://www.cnblogs.com/ma77045728/p/7009374.html
Copyright © 2011-2022 走看看