sice5921 2015-07-13 05:21 采纳率: 100%
浏览 2494
已采纳

C#处理C++的的返回值Cbitmap*生成图像在控件中显示

Cbitmap* userGetBitmap(HWND hwnd,int nBMPWIDTH,int nBMPHEIGHT);
hwnd需要显示当前图像的窗口句柄
nBMPWIDTH 需要生成的图像的像素宽度

nBMPHEIGHT需要生成的图像的像素高度

        C++的DLL中有如上函数,请问,用C#如何接招。如何用C#要根据上面的函数生成一个图片并在控件中显示。
  • 写回答

2条回答

  • Trent1985 博客专家认证 2015-07-15 05:09
    关注

    Cbitmap* userGetBitmap(HWND hwnd,int nBMPWIDTH,int nBMPHEIGHT);
    对于你这个接口:
    1,Cbitmap这个是你在C++里定义的,你需要在C#里重新定义一个结构体跟C++的对应;
    2,HWND这个可以看一下在C++中他占用几个字节,然后再C#中寻找对应;或者直接在C++中使用,不要再接口中出现;
    3,int就不用说了。
    给你个参考:
    //c++:HANDLE(void ) ---- c#:System.IntPtr

    //c++:Byte(unsigned char) ---- c#:System.Byte

    //c++:SHORT(short) ---- c#:System.Int16

    //c++:WORD(unsigned short) ---- c#:System.UInt16

    //c++:INT(int) ---- c#:System.Int16

    //c++:INT(int) ---- c#:System.Int32

    //c++:UINT(unsigned int) ---- c#:System.UInt16

    //c++:UINT(unsigned int) ---- c#:System.UInt32

    //c++:LONG(long) ---- c#:System.Int32

    //c++:ULONG(unsigned long) ---- c#:System.UInt32

    //c++:DWORD(unsigned long) ---- c#:System.UInt32

    //c++:DECIMAL ---- c#:System.Decimal

    //c++:BOOL(long) ---- c#:System.Boolean

    //c++:CHAR(char) ---- c#:System.Char

    //c++:LPSTR(char *) ---- c#:System.String

    //c++:LPWSTR(wchar_t *) ---- c#:System.String

    //c++:LPCSTR(const char *) ---- c#:System.String

    //c++:LPCWSTR(const wchar_t *) ---- c#:System.String

    //c++:PCAHR(char *) ---- c#:System.String

    //c++:BSTR ---- c#:System.String

    //c++:FLOAT(float) ---- c#:System.Single

    //c++:DOUBLE(double) ---- c#:System.Double

    //c++:VARIANT ---- c#:System.Object

    //c++:PBYTE(byte *) ---- c#:System.Byte[]

    //c++:BSTR ---- c#:StringBuilder

    //c++:LPCTSTR ---- c#:StringBuilder

    //c++:LPCTSTR ---- c#:string

    //c++:LPTSTR ---- c#:[MarshalAs(UnmanagedType.LPTStr)] string

    //c++:LPTSTR 输出变量名 ---- c#:StringBuilder 输出变量名

    //c++:LPCWSTR ---- c#:IntPtr

    //c++:BOOL ---- c#:bool

    //c++:HMODULE ---- c#:IntPtr

    //c++:HINSTANCE ---- c#:IntPtr

    //c++:结构体 ---- c#:public struct 结构体{};

    //c++:结构体 *
    变量名 ---- c#:out 变量名

    //C#中提前申明一个结构体实例化后的变量名

    //c++:结构体 &变量名 ---- c#:ref 结构体 变量名

    //c++:WORD ---- c#:ushort

    //c++:DWORD ---- c#:uint

    //c++:DWORD ---- c#:int

    //c++:UCHAR ---- c#:int

    //c++:UCHAR ---- c#:byte

    //c++:UCHAR* ---- c#:string

    //c++:UCHAR* ---- c#:IntPtr

    //c++:GUID ---- c#:Guid

    //c++:Handle ---- c#:IntPtr

    //c++:HWND ---- c#:IntPtr

    //c++:DWORD ---- c#:int

    //c++:COLORREF ---- c#:uint

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?