LPSTR/LPCSTR/LPTSTR/HWND/HANDLE/HMODULE/HINSTANCE 等含义和区别
文章目录
- 辨别区分标志
- Windows Data Types
- 含义
- Reference
简 述: Windows
编程中常见的一些类型意义、区别和讲解定义
- PVOID 和 LPVOID
- LPSTR / LPCSTR / LPTSTR / LPCTSTR / LPWSTR / LPCWSTR
- 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
- LPSTR: 32bit 指针,指向一个字符串,每个字符占 1 字节。 相当于 char *
- LPCSTR: 32-bit 指针,指向一个常字符串,每个字符占 1 字节。 相当于 const char *
- LPWSTR: 32-bit 指针,指向一个 unicode 字符串的指针,每个字符占 2 字节。
- LPCWSTR: 32-bit 指针,指向一个 unicode 字符串常量的指针,每个字符占 2 字节。
- LPTSTR: 32-bit 指针,指向一个字符串, 每字符可能占 1 字节或 2 字节,取决于 Unicode 是否定义
- LPCTSTR: 32-bit 指针,指向一个常字符串,每字符可能占 1 字节或 2 字节,取决于 Unicode 是否定义
HWND / HANDLE / HMODULE / HINSTANCE
都是
void *
类型,没有区别,只是其使用时候代表的含义用作区分- HWND:窗口句柄,如线程相关的
- HANDLE :系统内核对象,如文件句柄,线程句柄,进程句柄
- HMODULE :模块基地址,如 exe、dll 被载入内存时刻的地址
- 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 等含义和区别相关推荐
- HANDLE HMODULE HINSTANCE HWND
Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄. HMODULE 是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址. HINSTANCE 在win32下与HMO ...
- HANDLE HMODULE HINSTANCE HWND的区别
Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄. HMODULE 是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址. HINSTANCE 在win32下与HMO ...
- Handle ,HMODULE ,HINSTANCE,HINSTANCE
Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄. HMODULE 是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址. HIN ...
- LPSTR, LPCSTR ,LPTSTR,LPCSTR,LPWSTR LPCWSTR
LPCSTR 32-bit 指针,指向一个常量字串 LPSTR 32-bit 指针,指向一个字串 LPCTSTR 32-bit 指针,指向一 ...
- LPSTR LPCSTR LPTSTR LPCTSTR
类型 标识 标识意义 说明 LPSTR 指针 指向一个字符串,每个字符占1字节 LPCSTR C 常量 指针 指向一个常字符串,每个字符占1字节 LPTSTR T 可变 指针 指向一个常字符串,每字 ...
- LPSTR LPCSTR LPWSTR LPCWSTR区别
LPSTR LPCSTR LPWSTR LPCWSTR区别 LPSTR 一个32位的指向字符串的指针 LPCSTR 一个32位的指向字符串常量的指针 LPWSTR 一个 ...
- HINSTANCE,HWND、HMODULE 详解
一.HINSTANCE,HWND和ID值的用法及意义和区别 HINSTANCE;应用程序实例句柄,它是一个唯一用来标识程序进程的32位的变量, HWND:是窗口句柄,有很多种句柄,还有HBRUSH,H ...
- LPSTR/LPCSTR/LPWSTR/LPCWSTR/LPTSTR/LPCTSTR字符串指针
LPSTR = char* LPCSTR = const char*LPWSTR = wchar_t* LPCWSTR = const wchar_t*LPTSTR = char* or wchar_ ...
- LPSTR,LPCSTR,LPWSTR,LPCWSTR,LPTSTR,LPCTSTR转换
LPSTR char* LPCSTR const char* LPWSTR wchar_t* LPCWSTR const wchar_t* LPTSTR TCHAR* L ...
最新文章
- python画动态爱心-python绘制动态爱心
- 计算机网络第五章:运输层
- UA OPTI501 电磁波 Lorentz Oscillator Model 1 Drude-Lorentz模型
- filecoin白皮书_Filecoin收益知多少?
- Java笔记-使用RabbitMQ的Java接口实现Routing(路由模式)
- django-pure-pagination 分页插件
- Java JDK11的下载与安装
- python爬取携程旅游_「携程网 机票」使用requests爬取携程网飞机票价格实例 - seo实验室...
- subject 获取登录用户信息
- 浅谈Observer观察者模式
- 帮我用c语言写一个求1000以内质数的程序
- 图片动漫化 - 面部 - AnimeGAN
- 表单工作流审核步骤抄送功能介绍
- D盘Program Files消失,如何恢复
- 高精度加法c++代码string实现
- YOLO3 + Python 基础教程(一):环境搭建与测试
- C++的lib文件到底是什么
- 数据资产确权认责,确什么权,认什么责?
- jsp21127无人超市采购购物系统
- 俄罗斯研究人员表示可访问全球所有小米宠物喂食器