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型

  • 相关阅读:
    performance benchmark : memcached vs Kyoto Tycoon
    Adhesive框架系列文章应用程序信息中心模块实现
    神奇的Redis
    使用代码测试ASP.NET MVC2执行流程
    linq2sql代码大全
    7/17博客园活动浅谈网站架构中缓存的应用所有资料
    浅谈.NET下的多线程和并行计算(十四)并行计算前言
    公司.NET 3.5培训资料分享
    mongodb分片集群(sharding with replica set)配置
    mongodb有关的研究
  • 原文地址:https://www.cnblogs.com/ma77045728/p/7009374.html
Copyright © 2011-2022 走看看