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型

  • 相关阅读:
    C++学习 之 程序的组成部分(部分知识笔记)
    debian下重装mysql
    CGI 环境变量
    boost的libboost_system问题
    debian下使用shell脚本时出现了 declare:not found 解决方法
    编译的时候出现"/usr/bin/ld: cannot find -lz
    glibc升级,解决glib版本过低的问题
    ubuntu彩色图形界面
    (转)http://blog.chinaunix.net/uid-8363656-id-2031644.html CGI 编写
    linux安装JSONCPP
  • 原文地址:https://www.cnblogs.com/ma77045728/p/7009374.html
Copyright © 2011-2022 走看看