首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#中怎么将结构体传入动态链接库中

2012-06-20 
C#中如何将结构体传入动态链接库中有一段 VC++ 的结构体,并且封装到了LEDShow.DLL中,//调用 外部函数在VC+

C#中如何将结构体传入动态链接库中
有一段 VC++ 的结构体,并且封装到了LEDShow.DLL中,
//调用 外部函数
在VC++中的调用方式
DLL_API int __stdcall User_AddSingleText(int CardNum,User_SingleText *pSingleText,int iProgramIndex);

C/C++ code
typedef struct    _User_FontSet        //字体设置{    char*        strFontName;        //字体的名称    int            iFontSize;            //字体的大小    BOOL        bFontBold;            //字体是否加粗    BOOL        bFontItaic;            //字体是否是斜体    BOOL        bFontUnderline;        //字体是否带下划线    COLORREF    colorFont;            //字体的颜色    int            iAlignStyle;        //对齐方式                                    //0- 左对齐                                     //1-居中                                     //2-右对齐    int         iVAlignerStyle;        //上下对齐方式                                    //0-顶对齐                                    //1-上下居中                                    //2-底对齐    int         iRowSpace;            //行间距}User_FontSet;typedef struct    _User_PartInfo        //区域设置{    int            iX;                    //窗口的起点X    int            iY;                    //窗口的起点Y    int            iWidth;                //窗体的宽度    int            iHeight;            //窗体的高度    int            iFrameMode;            //边框的样式    COLORREF    FrameColor;            //边框颜色}User_PartInfo;typedef struct _User_MoveSet{    int            iActionType;        //节目变换方式    int            iActionSpeed;        //节目的播放速度        BOOL        bClear;                //是否需要清除背景    int            iHoldTime;            //在屏幕上停留的时间    int         iClearSpeed;        //清除显示屏的速度    int            iClearActionType;    //节目清除的变换方式    int         iFrameTime;}User_MoveSet;

如何将上述 结构体 和调用方法 转换成 c#代码 
在线等

[解决办法]
C# code
extern static int User_AddSingleText(int CardNum,ref User_SingleText pSingleText,int iProgramIndex);        struct    User_FontSet        //字体设置{    IntPtr       strFontName;        //字体的名称    int            iFontSize;            //字体的大小    bool bFontBold;            //字体是否加粗    bool bFontItaic;            //字体是否是斜体    bool bFontUnderline;        //字体是否带下划线    int    colorFont;            //字体的颜色    int            iAlignStyle;        //对齐方式                                    //0- 左对齐                                     //1-居中                                     //2-右对齐    int         iVAlignerStyle;        //上下对齐方式                                    //0-顶对齐                                    //1-上下居中                                    //2-底对齐    int         iRowSpace;            //行间距}         struct    User_PartInfo        //区域设置{    int            iX;                    //窗口的起点X    int            iY;                    //窗口的起点Y    int            iWidth;                //窗体的宽度    int            iHeight;            //窗体的高度    int            iFrameMode;            //边框的样式    int    FrameColor;            //边框颜色} struct User_MoveSet{    int            iActionType;        //节目变换方式    int            iActionSpeed;        //节目的播放速度        bool        bClear;                //是否需要清除背景    int            iHoldTime;            //在屏幕上停留的时间    int         iClearSpeed;        //清除显示屏的速度    int            iClearActionType;    //节目清除的变换方式    int         iFrameTime;}
[解决办法]
C# code
C#中调用Windows API时的数据类型对应关系                       BOOL=System.Int32                    BOOLEAN=System.Int32                    BYTE=System.UInt16CHAR=System.Int16                    COLORREF=System.UInt32                    DWORD=System.UInt32DWORD32=System.UInt32                DWORD64=System.UInt64                    FLOAT=System.FloatHACCEL=System.IntPtr                HANDLE=System.IntPtr                    HBITMAP=System.IntPtrHBRUSH=System.IntPtr                HCONV=System.IntPtr                        HCONVLIST=System.IntPtrHCURSOR=System.IntPtr                HDC=System.IntPtr                        HDDEDATA=System.IntPtrHDESK=System.IntPtr                    HDROP=System.IntPtr                        HDWP=System.IntPtrHENHMETAFILE=System.IntPtr            HFILE=System.IntPtr                        HFONT=System.IntPtrHGDIOBJ=System.IntPtr                HGLOBAL=System.IntPtr                    HHOOK=System.IntPtrHICON=System.IntPtr                    HIMAGELIST=System.IntPtr                HIMC=System.IntPtrHINSTANCE=System.IntPtr                HKEY=System.IntPtr                        HLOCAL=System.IntPtrHMENU=System.IntPtr                    HMETAFILE=System.IntPtr                    HMODULE=System.IntPtrHMONITOR=System.IntPtr                HPALETTE=System.IntPtr                    HPEN=System.IntPtrHRGN=System.IntPtr                    HRSRC=System.IntPtr                        HSZ=System.IntPtrHWINSTA=System.IntPtr                HWND=System.IntPtr                        INT=System.Int32    INT32=System.Int32                    INT64=System.Int64                        LONG=System.Int32    LONG32=System.Int32                    LONG64=System.Int64                        LONGLONG=System.Int64    LPARAM=System.IntPtr                LPBOOL=System.Int16[]                    LPBYTE=System.UInt16[]    LPCOLORREF=System.UInt32[]            LPCSTR=System.String                    LPCTSTR=System.String    LPCVOID=System.UInt32                LPCWSTR=System.String                    LPDWORD=System.UInt32[]    LPHANDLE=System.UInt32                LPINT=System.Int32[]                    LPLONG=System.Int32[]    LPSTR=System.String                    LPTSTR=System.String                    LPVOID=System.UInt32    LPWORD=System.Int32[]                LPWSTR=System.String                    LRESULT=System.IntPtrPBOOL=System.Int16[]                PBOOLEAN=System.Int16[]                    PBYTE=System.UInt16[]    PCHAR=System.Char[]                    PCSTR=System.String                        PCTSTR=System.String    PCWCH=System.UInt32                    PCWSTR=System.UInt32                    PDWORD=System.Int32[]    PFLOAT=System.Float[]                PHANDLE=System.UInt32                    PHKEY=System.UInt32    PINT=System.Int32[]                    ID=System.UInt32                        PLONG=System.Int32[]    PLUID=System.UInt32                    PSHORT=System.Int16[]                    PSTR=System.String    PTBYTE=System.Char[]                PTCHAR=System.Char[]                    PTSTR=System.String    PUCHAR=System.Char[]                PUINT=System.UInt32[]                    PULONG=System.UInt32[]    PUSHORT=System.UInt16[]                PVOID=System.UInt32                        PWCHAR=System.Char[]    PWORD=System.Int16[]                PWSTR=System.String                        REGSAM=System.UInt32    SC_HANDLE=System.IntPtr                SC_LOCK=System.IntPtr                    SHORT=System.Int16    SIZE_T=System.UInt32                SSIZE_=System.UInt32                    TBYTE=System.Char    TCHAR=System.Char                    UCHAR=System.Byte                        UINT=System.UInt32    UINT32=System.UInt32                UINT64=System.UInt64                    ULONG=System.UInt32    ULONG32=System.UInt32                ULONG64=System.UInt64                    ULONGLONG=System.UInt64    USHORT=System.UInt16                WORD=System.UInt16                        WPARAM=System.IntPtr    <---------补充----------->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 位 

热点排行