C#与C++类型对应表

在使用.Net互操作时,经常涉及到一些C++到C#的类型转换问题,为了以后方便查询,现将一些资源整理如下:

 
 

C++与C#数据类型对照表

C++数据类型

C#数据类型

WORD

ushort

DWORD

uint

UCHAR

int/byte

UCHAR*

string/InPtr

unsigned char*

[MarshalAs(UnmanagedType.LPArray)]byte[]/(IntPtr)

char*

string

LPCTSTR  

string

LPTSTR 

[MarshalAs(UnmanagedType.LPTStr)] string

long

int

ulong

uint

Handle  

IntPtr

HWND

IntPtr

void*

IntPtr

int  

int  

int* 

ref int

*int  

IntPtr

unsigned int

uint

COLORREF 

uint


 

Windows(C++)与C#数据类型对照表

Windows数据类型

.NET数据类型

BOOL, BOOLEAN

Boolean or Int32

BSTR

String

BYTE

Byte

CHAR

Char

DOUBLE

Double

DWORD

Int32 or UInt32

FLOAT

Single

HANDLE (and all other handle types, such as HFONT and HMENU)

IntPtr, UintPtr or HandleRef

HRESULT

Int32 or UInt32

INT

Int32

LANGID

Int16 or UInt16

LCID

Int32 or UInt32

LONG

Int32

LPARAM

IntPtr, UintPtr or Object

LPCSTR

String

LPCTSTR

String

LPCWSTR

String

LPSTR

String or StringBuilder*

LPTSTR

String or StringBuilder

LPWSTR

String or StringBuilder

LPVOID

IntPtr, UintPtr or Object

LRESULT

IntPtr

SAFEARRAY

.NET array type

SHORT

Int16

TCHAR

Char

UCHAR

SByte

UINT

Int32 or UInt32

ULONG

Int32 or UInt32

VARIANT

Object

VARIANT_BOOL

Boolean

WCHAR

Char

WORD

Int16 or UInt16

WPARAM

IntPtr, UintPtr or Object

 

API与C#数据类型对照表

API数据类型

类型描述

C#数据类型

WORD

16位无符号整数

ushort

LONG

32位无符号整数

int

DWORD

32位无符号整数

uint

HANDLE

句柄,32位整数

int

UINT

32位无符号整数

uint

BOOL

32位布尔型整数

bool

LPSTR

之乡字符的32位指针

string

LPCSTR

指向常字符的32位指针

string

BYTE

字节

byte

CHAR

字符

char

DWORDLONG

64位长度整数

long

HDC

设备描述表句柄

int

HGDIOBJ

GDI对象句柄

int

HINSTANCE

实例句柄

int

HWM

窗口句柄

int

HPARAM

32位消息参数

int

LPARAM

32位消息参数

int

WPARAM

32位消息参数

int

Wtypes.h与C#数据类型对照表

Wtypes.h中的非托管类型

非托管C语言类型

托管类名

位数

HANDLE

void*

IntPtr

32

BYTE

unsigned char

Byte

8

SHORT

short

Int16

16

WORD

unsigned short

UInt16

16

INT

int

Int32

32

UINT

unsigned int

UInt32

32

LONG

long

Int32

32

BOOL

long

Int32

32

DWORD

unsigned long

UInt32

32

ULONG

unsigned long

UInt32

32

CHAR

char

Char

 

LPSTR

char*

StringStringBuilder用ANSI修饰

 

LPCSTR

Const char*

StringStringBuilder用ANSI修饰

 

LPWSTR

wchar_t*

StringStringBuilder用ANSI修饰

 

LPCWSTR

Constwchar_t*

StringStringBuilder用ANSI修饰

 

FLOAT

Float

Single

32

DOUBLE

Double

Double

64

 

 

 

 

C++与C#数据类型对照表

C++数据类型

C#数据类型

BOOL

Int32

BOOLEAN

Int32

BYTE

UInt16

CHAR

UInt16

COLORREF

UInt32

DWORD

UInt32

DWORD32

UInt32

DWORD64

UInt64

FLOAT

Float

HACCEL

IntPtr

HANDLE

IntPtr

HBITMAP

IntPtr

HBRUSH

IntPtr

HCONV

IntPtr

HCONVLIST

IntPtr

HCURSOR

IntPtr

HDC

IntPtr

HDDEDATA

IntPtr

HDESK

IntPtr

HDROP

IntPtr

HDWP

IntPtr

HENHMETAFILE

IntPtr

HFILE

IntPtr

HFONT

IntPtr

HGDIOBJ

IntPtr

HGLOBAL

IntPtr

HHOOK

IntPtr

HICON

IntPtr

HIMAGELIST

IntPtr

HIMC

IntPtr

HINSTANCE

IntPtr

HKEY

IntPtr

HLOCAL

IntPtr

HMENU

IntPtr

HMETAFILE

IntPtr

HMODULE

IntPtr

HMONITOR

IntPtr

HPALETTE

IntPtr

HPEN

IntPtr

HRGN

IntPtr

HRSRC

IntPtr

HSZ

IntPtr

HWINSTA

IntPtr

HWND

IntPtr

INT

Int32

INT32

Int32

INT64

Int64

LONG

Int32

LONG32

Int32

LONG64

Int64

LONGLONG

Int64

LPARAM

IntPtr

LPBOOL

Int16[]

LPBYTE

UInt16[]

LPCOLORREF

UInt32[]

LPCSTR

String

LPCTSTR

String

LPCVOID

UInt32

LPCWSTR

String

LPDWORD

UInt32

LPHANDLE

UInt32

LPINT

UInt32

LPLONG

UInt32

LPSTR

String

LPTSTR

String

LPVOID

UInt32

LPWORD

UInt32[]

LPWSTR

String

LRESULT

IntPtr

PBOOL

Int16[]

PBOOLEAN

Int16[]

PBYTE

UInt16[]

PCHAR

Char[]

PCSTR

String

PCTSTR

String

PCWCH

UInt32

PCWSTR

UInt32

PDWORD

Int32[]

FPFLOAT

Float[]

PHANDLE

UInt32

PHKEY

UInt32

PINT

Int32[]

PLCID

UInt32

PLONG

Int32[]

PLUID

Uint32

PSHORT

Int16[]

PSTR

String

PTBYTE

Char[]

PTCHAR

Char[]

PTSTR

String

PUCHAR

Char[]

PUINT

UInt32[]

PULONG

UInt32[]

PUSHORT

UInt16[]

PVOID

UInt32

PWCHAR

Char[]

PWORD

Int16[]

PWSTR

String

REGSAM

UInt32

SC_HANDLE

IntPtr

SC_LOCK

IntPtr

SHORT

Int16

SIZE_T

UInt32

SSIZE

UInt32

TBYTE

Char

TCHAR

Char

UCHAR

Byte

UINT

UInt32

UINT32

UInt32

UINT64

UInt64

ULONG

UInt32

ULONG32

UInt32

ULONG64

UInt64

ULONGLONG

UInt64

USHORT

UInt16

WORD

UInt16

WPARAM

IntPtr









下载C#封装好的Win32API
原文地址:https://www.cnblogs.com/zhangpengshou/p/2195794.html