文章目录

  • 辨别区分标志
  • Windows Data Types
  • 含义
  • Reference

简 述: Windows 编程中常见的一些类型意义、区别和讲解定义

  1. PVOID 和 LPVOID
  2. LPSTR / LPCSTR / LPTSTR / LPCTSTR / LPWSTR / LPCWSTR
  3. HWND / HANDLE / HMODULE / HINSTANCE

辨别区分标志

  • L --> long;WIN32 下 long 和 int 长度一样。 故 L 和 LP 无区别
  • C --> const
  • T --> 通用版本,依据 UNICODE 时候被定义,确定使用 A 还是 W 版本的函数、或字符集。
  • STR --> string 字符串
  • PTR --> ptr 指针

本文初发于 “偕臧的小站”,同步转载于此。

Windows Data Types

typedef void *PVOID;                                     // PVOID      - void *
typedef void *LPVOID;                                   // LPVOID     - void *typedef CHAR *LPSTR;                                      // LPSTR      - ANSI, 每个字符占 1 字节(8 bit)
typedef __nullterminated CONST CHAR *LPCSTR;            // LPCSTR     - ANSI,  每个字符占 1 字节
typedef WCHAR *LPWSTR;                                  // LPWSTR     - UNICODE, 每个字符占 2 字节(16 bit)
typedef CONST WCHAR *LPCWSTR;                           // LPCWSTR    - UNICODE,  每个字符占 2 字节
typedef LPWSTR LPTSTR;   [OR] typedef LPSTR LPTSTR;     // LPTSTR     - ANSI/UNICODE, 每个字符占 1 字节或 2 字节
typedef LPCWSTR LPCTSTR; [OR] typedef LPCSTR LPCTSTR;   // LPCTSTR    - ANSI/UNICODE, 每个字符占 1 字节或 2 字节typedef PVOID HANDLE;                                 // HANDLE     - void *
typedef HANDLE HWND;                                    // HWND       - void *typedef HINSTANCE HMODULE;                                // HMODULE    - void *   此两个互相等价, 于 <wtypes.h>
typedef HANDLE HINSTANCE;                               // HINSTANCE  - void *
Data type Description declared
PVOID A pointer to any type. WinNT.h
LPVOID A pointer to any type. WinDef.h
LPSTR A pointer to a null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts WinNT.h
LPCSTR A pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters. For more information, see Character Sets Used By Fonts WinNT.h
LPWSTR A pointer to a null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts WinNT.h
LPCWSTR A pointer to a constant null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts WinNT.h
LPTSTR An LPWSTR if UNICODE is defined, an LPSTR otherwise. For more information, see Windows Data Types for Strings WinNT.h
LPCTSTR An LPCWSTR if UNICODE is defined, an LPCSTR otherwise. For more information, see Windows Data Types for Strings WinNT.h
HWND A handle to a window. WinDef.h
HANDLE A handle to an object. WinNT.h
HMODULE A handle to a module. The is the base address of the module in memory. HMODULE and HINSTANCE are the same in current versions of Windows, but represented different things in 16-bit Windows. WinDef.h
HINSTANCE A handle to an instance. This is the base address of the module in memory. WinDef.h

含义

  • PVOID 和 LPVOID

    • 都是 void *, 可指向一切,不解释。
  • LPSTR / LPCSTR / LPTSTR / LPCTSTR / LPWSTR / LPCWSTR

    1. LPSTR: 32bit 指针,指向一个字符串,每个字符占 1 字节。 相当于 char *
    2. LPCSTR: 32-bit 指针,指向一个常字符串,每个字符占 1 字节。 相当于 const char *
    3. LPWSTR: 32-bit 指针,指向一个 unicode 字符串的指针,每个字符占 2 字节。
    4. LPCWSTR: 32-bit 指针,指向一个 unicode 字符串常量的指针,每个字符占 2 字节。
    5. LPTSTR: 32-bit 指针,指向一个字符串, 每字符可能占 1 字节或 2 字节,取决于 Unicode 是否定义
    6. LPCTSTR: 32-bit 指针,指向一个常字符串,每字符可能占 1 字节或 2 字节,取决于 Unicode 是否定义
  • HWND / HANDLE / HMODULE / HINSTANCE

    都是 void * 类型,没有区别,只是其使用时候代表的含义用作区分

    1. HWND:窗口句柄,如线程相关的
    2. HANDLE :系统内核对象,如文件句柄,线程句柄,进程句柄
    3. HMODULE :模块基地址,如 exe、dll 被载入内存时刻的地址
    4. HINSTANCE:同 HMODULE(仅在 16 位 Windows 上有所不同)

Reference

  • docs.microsoft.com:windows-data-types
  • Windows客户端开发–必须清楚HWND、HANDLE、HMODULE、HINSTANCE的区别
  • LPSTR、LPCSTR、LPTSTR和LPCTSTR的意义及区别
  • 引用 LPSTR、LPCSTR、LPTSTR、LPCTSTR、LPWSTR及LPCWSTR的意义及区别

LPSTR/LPCSTR/LPTSTR/HWND/HANDLE/HMODULE/HINSTANCE 等含义和区别相关推荐

  1. HANDLE HMODULE HINSTANCE HWND

    Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄. HMODULE 是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址. HINSTANCE 在win32下与HMO ...

  2. HANDLE HMODULE HINSTANCE HWND的区别

    Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄. HMODULE 是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址. HINSTANCE 在win32下与HMO ...

  3. Handle ,HMODULE ,HINSTANCE,HINSTANCE

    Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄.          HMODULE 是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址.          HIN ...

  4. LPSTR, LPCSTR ,LPTSTR,LPCSTR,LPWSTR LPCWSTR

    LPCSTR       32-bit   指针,指向一个常量字串    LPSTR        32-bit   指针,指向一个字串    LPCTSTR      32-bit   指针,指向一 ...

  5. LPSTR LPCSTR LPTSTR LPCTSTR

    类型 标识 标识意义 说明 LPSTR 指针 指向一个字符串,每个字符占1字节 LPCSTR C 常量 指针 指向一个常字符串,每个字符占1字节  LPTSTR T 可变 指针 指向一个常字符串,每字 ...

  6. LPSTR LPCSTR LPWSTR LPCWSTR区别

    LPSTR LPCSTR LPWSTR LPCWSTR区别 LPSTR   一个32位的指向字符串的指针      LPCSTR   一个32位的指向字符串常量的指针      LPWSTR   一个 ...

  7. HINSTANCE,HWND、HMODULE 详解

    一.HINSTANCE,HWND和ID值的用法及意义和区别 HINSTANCE;应用程序实例句柄,它是一个唯一用来标识程序进程的32位的变量, HWND:是窗口句柄,有很多种句柄,还有HBRUSH,H ...

  8. LPSTR/LPCSTR/LPWSTR/LPCWSTR/LPTSTR/LPCTSTR字符串指针

    LPSTR = char* LPCSTR = const char*LPWSTR = wchar_t* LPCWSTR = const wchar_t*LPTSTR = char* or wchar_ ...

  9. LPSTR,LPCSTR,LPWSTR,LPCWSTR,LPTSTR,LPCTSTR转换

    LPSTR char* LPCSTR const char* LPWSTR                wchar_t* LPCWSTR const wchar_t* LPTSTR TCHAR* L ...

最新文章

  1. python画动态爱心-python绘制动态爱心
  2. 计算机网络第五章:运输层
  3. UA OPTI501 电磁波 Lorentz Oscillator Model 1 Drude-Lorentz模型
  4. filecoin白皮书_Filecoin收益知多少?
  5. Java笔记-使用RabbitMQ的Java接口实现Routing(路由模式)
  6. django-pure-pagination 分页插件
  7. Java JDK11的下载与安装
  8. python爬取携程旅游_「携程网 机票」使用requests爬取携程网飞机票价格实例 - seo实验室...
  9. subject 获取登录用户信息
  10. 浅谈Observer观察者模式
  11. 帮我用c语言写一个求1000以内质数的程序
  12. 图片动漫化 - 面部 - AnimeGAN
  13. 表单工作流审核步骤抄送功能介绍
  14. D盘Program Files消失,如何恢复
  15. 高精度加法c++代码string实现
  16. YOLO3 + Python 基础教程(一):环境搭建与测试
  17. C++的lib文件到底是什么
  18. 数据资产确权认责,确什么权,认什么责?
  19. jsp21127无人超市采购购物系统
  20. 俄罗斯研究人员表示可访问全球所有小米宠物喂食器

热门文章

  1. MySQL数据库-DQL(单表查询)
  2. vue创建项目卡住不动,vue create project卡住不动
  3. python中的声音处理文件库_介绍几个python的音频处理库
  4. unicode字符集特殊符号对应html/js/css符号
  5. error A2031: gisters not allowed【汇编】
  6. 输入编码,自动匹配并输出相对应的名称
  7. [转贴]同济大学软件学院万院长谈择业
  8. Vue绑定Class样式
  9. 3D建模其实很简单!从零基础到大佬,超详细知识点汇总,附教程
  10. 求超大文件上传方案( js )