懂VB、C++、C#的来帮我解决个问题

yueqing 2010-01-29 10:17:07
有段代码要用C#来写,偶比较笨,不会写。
请教达人帮我改写下
-----------------------------------------------------------------------------------------------------------
VB代码如下:

'添加图文区及向图文区添加图片
Public Declare Function User_AddBmpZone Lib "EQ2002_Dll.dll" (ByVal CardNum As Long, ByRef pBmp As User_Bmp, ByVal iProgramIndex As Long) As Long
Public Declare Function User_AddBmp Lib "EQ2002_Dll.dll" (ByVal CardNum As Long, ByVal iBmpPartNum As Long, ByVal hBitmap As Long, ByRef pMoveSet As User_MoveSet, ByVal iProgramIndex As Long) As Boolean


调用

iBMPZoneNum = User_AddBmpZone(m_iCardNum, BmpZone, m_iProgramIndex)

Call User_AddBmp(m_iCardNum, iBMPZoneNum, Picture1.Picture.Handle, MoveSet, m_iProgramIndex)

-----------------------------------------------------------------------------------------------------------
C++代码如下:

//添加图文区
DLL_API int __stdcall User_AddBmpZone(int CardNum,User_Bmp *pBmp,int iProgramIndex);
DLL_API BOOL __stdcall User_AddBmp(int CardNum,int iBmpPartNum,HBITMAP hBitmap,User_MoveSet* pMoveSet,int iProgramIndex);


调用

iBMPZoneNum = User_AddBmpZone(m_iCardNum,&BmpZone,m_iProgramIndex);

bitmap.DeleteObject();
bitmap.LoadBitmap(IDB_BITMAP4);
User_AddBmp(m_iCardNum,iBMPZoneNum,(HBITMAP)bitmap,&MoveSet,m_iProgramIndex);

-----------------------------------------------------------------------------------------------------------
想把上面代码改成C#写

/// <summary>
/// 添加图文区及向图文区添加图片
/// </summary>
/// <param name="CarNum"></param>
/// <param name="pBmp"></param>
/// <param name="iProgranIndex"></param>
/// <returns></returns>
[DllImport("EQ2002_Dll.dll")]
public static extern int User_AddBmpZone(int CarNum,ref User_Bmp pBmp,int iProgranIndex);
[DllImport("EQ2002_Dll.dll")]
//public static extern bool User_AddBmp(int CardNum, int iBmpPartNum, int hBitmap, ref User_MoveSet pMoveSet, int iProgramIndex);
public static extern bool User_AddBmp(int CardNum, int iBmpPartNum, Bitmap hBitmap, ref User_MoveSet pMoveSet, int iProgramIndex);


调用

iBMPZoneNum = EQ2002_Dll.User_AddBmpZone(m_iCardNum, ref BmpZone, m_iProgramIndex);

Bitmap bt = new Bitmap("c:\\image001.jpg");
Graphics gc = Graphics.FromImage(bt);
//IntPtr g = gc.GetHdc();
//IntPtr g = bt.GetHicon;
EQ2002_Dll.User_AddBmp(m_iCardNum, iBMPZoneNum, bt, ref MoveSet, m_iProgramIndex);

-------------------------------------------------------------------------------------

不知道改成的C#代码对不对。应该如何改呢?

如果C# DllImport dll照着 vb写成如下
public static extern bool User_AddBmp(int CardNum, int iBmpPartNum, int hBitmap, ref User_MoveSet pMoveSet, int iProgramIndex);

改怎么调用呢?

问题出在 第三个参数上,怎么定义第三个参数?定义了如何调用?
...全文
141 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yueqing 2010-03-05
  • 打赏
  • 举报
回复
已经搞定,有时间我把代码贴出来
yueqing 2010-01-29
  • 打赏
  • 举报
回复
没有人吗?搞了一下,如下:
        
[DllImport("EQ2002_Dll.dll")]
public static extern bool User_AddBmp(int CardNum, int iBmpPartNum, IntPtr hBitmap, ref User_MoveSet pMoveSet, int iProgramIndex);

调用

Bitmap bt = new Bitmap("c:\\image001.jpg");
EQ2002_Dll.User_AddBmp(m_iCardNum, iBMPZoneNum, bt.GetHbitmap(), ref MoveSet, m_iProgramIndex);

不晓得可以不,下周连设备试了再来告诉大家
或者有知道的人,直接告诉我,谢谢了
yueqing 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhaojianjun21c 的回复:]
多看看MSDN,里面有关于如何调用DLL的说明
[/Quote]
调用会啊,现在的问题是 这个参数 搞不定啊,如何定义这个 参数?
如何取得句柄传给这个参数
zhaojianjun21c 2010-01-29
  • 打赏
  • 举报
回复
多看看MSDN,里面有关于如何调用DLL的说明
Taiyangchen 2010-01-29
  • 打赏
  • 举报
回复
没看明白,还是关注
yueqing 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zishanyan 的回复:]
额,还没看具体代码,不过要转换的话先发个转换代码的网站给LZhttp://www.developerfusion.com/tools/convert/vb-to-csharp/
[/Quote]
这个是VB.net 转 C#的

我贴出来的代码是VB的,我先把VB升级成vb.net后,出现如下问题
'UPGRADE_ISSUE: Picture 属性 Picture1.Picture.Handle 未升级。 单击以获得更多信息:“ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="CC4C7EC0-C903-48FC-ACCC-81861D12DA4A"”
Call User_AddBmp(m_iCardNum, iBMPZoneNum, Picture1.Image.Handle, MoveSet, m_iProgramIndex)


Picture1.Image.Handle
错误 1 “Handle”不是“System.Drawing.Image”的成员。
zishanyan 2010-01-29
  • 打赏
  • 举报
回复
额,还没看具体代码,不过要转换的话先发个转换代码的网站给LZhttp://www.developerfusion.com/tools/convert/vb-to-csharp/
Hamsic 2010-01-29
  • 打赏
  • 举报
回复
友情UP
  • 打赏
  • 举报
回复
这是c语言外部调用问题,java jni

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧