Wtypes.h 中的非托管类型 非托管C 语言类型 托管类名 说明
HANDLE void* System.IntPtr 32 位
BYTE unsigned char System.Byte 8 位
SHORT short System.Int16 16 位
WORD unsigned short System.UInt16 16 位
INT int System.Int32 32 位
UINT unsigned int System.UInt32 32 位
LONG long System.Int32 32 位
BOOL long System.Int32 32 位
DWORD unsigned long System.UInt32 32 位
ULONG unsigned long System.UInt32 32 位
CHAR char System.Char 用 ANSI 修饰。
LPSTR char* System.String 或 System.StringBuilder 用 ANSI 修饰。
LPCSTR Const char* System.String 或 System.StringBuilder 用 ANSI 修饰。
LPWSTR wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰。
LPCWSTR Const wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰。
FLOAT Float System.Single 32 位
DOUBLE Double System.Double 64 位
HANDLE void* System.IntPtr 32 位
BYTE unsigned char System.Byte 8 位
SHORT short System.Int16 16 位
WORD unsigned short System.UInt16 16 位
INT int System.Int32 32 位
UINT unsigned int System.UInt32 32 位
LONG long System.Int32 32 位
BOOL long System.Int32 32 位
DWORD unsigned long System.UInt32 32 位
ULONG unsigned long System.UInt32 32 位
CHAR char System.Char 用 ANSI 修饰。
LPSTR char* System.String 或 System.StringBuilder 用 ANSI 修饰。
LPCSTR Const char* System.String 或 System.StringBuilder 用 ANSI 修饰。
LPWSTR wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰。
LPCWSTR Const wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰。
FLOAT Float System.Single 32 位
DOUBLE Double System.Double 64 位
解决方案 »
- 未处System.StackOverflowException 确保程序没有无限循环或无线递归
- C# winform有关tabControl如何设置某一个tabPage为当前选定页!!急!!在线等!!
- 关于dataset的问题 c#
- 在文本文件中删除一行
- C#里面怎么实现进度条
- 小弟丛0开始学C#请问大家有没有什么好多书推荐给我的谢谢
- C#怎么把边获取的数流边播放出来(录音得到的数据流)
- webbrower问题
- ##靠,问个问题,也没有人回答的!Web.config Global.asax 怎么配置阿?##--up有分
- 如何保存一个Font对象到xml文件中?
- 使用一个sql语句是否能够完成:没有则插入,有则更新。
- c#如何开发office插件?急,能解决问题的再开贴给分!
请问如下的两处如何翻译成C#?char szProxyName[128]; //此处如何写成C#模式?
} TDataBrokerInputOptions, *PTDataBrokerInputOptions; //此处如何写成C#模式?
char szProxyName[128]; //此处如何写成C#模式?
} TDataBrokerInputOptions, *PTDataBrokerInputOptions; //此处如何写成C#模式?
using System.Runtime.InteropServices;[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi, Pack=1)]
public struct TDataBrokerInputOptions
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst=128)]
public byte[] szProxyName ; [MarshalAs(UnmanagedType.LPStr)]
public string pszIPRestrictList;
}[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi, Pack=1)]
public struct TDataBrokerOptions
{
[MarshalAs(UnmanagedType.LPStr)]
public string pzServerType; public IntPtr zVSize;
}
内容 [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi, Pack=1)]
public struct TDataBrokerOptions
{
public TDataBrokerStatusCallback pfStatus;
public TDataBrokerAVCallback pfAV;
public uint dwStatusContext;
public uint dwAVContext;
[MarshalAs(UnmanagedType.LPStr)]
public string pzServerType;
public uint dwAudioCodec;
public uint dwVideoCodec;
public uint dwProtocolType;
public IntPtr zVSize;
}
另外
typedef struct
{
...
} TDataBrokerInputOptions, *PTDataBrokerInputOptions;
应该是定义一个结构类型和这个结构的指针,C#中只需要定义结构就可以了,不必定义指针
编号: 3 发送者 Brunhild 发送时间 2004-9-29 13:45:24 删除 回复
内容 我的C++也是一般,试试翻译吧。
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi, Pack=1)]
public struct TDataBrokerInputOptions
{
public bool bEnableProxy;
public uint dwProxyPort;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=128)]
public byte[] szProxyName ;
public bool bEnableIPRestrict;
public uint dwIPRestrictNum;
[MarshalAs(UnmanagedType.LPStr)]
public string pszIPRestrictList;
public uint dwFlags;
}
谢谢Brunhild()