VB.net API变量

VB.net API变量,vb.net,Vb.net,我真的希望有人能帮我做这件事,我到处都找遍了,找不到关于这件事的任何东西。 我有一台智能卡打印机,可以打印塑料卡,我有一个API可以直接从vb.net与之交互,我已经成功地执行了大多数函数,但其中一个引用了 1 COLORREF 和 我不知道他们想要我提供什么 下面是我为上下文给出的结构 01 int SmartComm_DrawBarcode( 02 HSMART hHandle, 03 BYTE page, 04 BYTE panel, 05 int x, 06 int y

我真的希望有人能帮我做这件事,我到处都找遍了,找不到关于这件事的任何东西。 我有一台智能卡打印机,可以打印塑料卡,我有一个API可以直接从vb.net与之交互,我已经成功地执行了大多数函数,但其中一个引用了

1   COLORREF

我不知道他们想要我提供什么

下面是我为上下文给出的结构

01  int SmartComm_DrawBarcode(
02  HSMART hHandle,
03  BYTE page,
04  BYTE panel,
05  int x,
06  int y,
07  int cx,
08  int cy,
09  COLORREF col,
10  RECT* prcArea,
11  const WCHAR* szName,
12  int nSize,
13  const WCHAR* szData,
14  const WCHAR* szPost
15  );
下面是我用来执行其中一个函数的代码,它工作得很好,我就是无法让条形码工作:

1   Dim lclogo As String = "C:\acer\lclogo.png"
2           strImg_ptr = Marshal.StringToHGlobalUni(LunchcardLogo)
3           rcDraws_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(GetType(RECT)))
4           If nres = SM_SUCCESS Then
5               nres = SmartComm_DrawImage(hsmart, CByte(PAGE_FRONT), CByte(PANEL_BLACK), 606, 456, 405, 171, strImg_ptr, rcDraws_ptr)
6           End If
7    
8           Marshal.FreeHGlobal(strImg_ptr)
9           Marshal.FreeHGlobal(rcDraws_ptr)
我知道原始结构是C或C++,但我不能在VB.NET中找到等价的。
谢谢各位

COLORREF基本上是32位整数值。您可以这样定义一个结构与之交互(有关详细信息,请参见此):

WCHAR*是指向宽字符串的指针。因此,您可以使用字符串作为其数据类型并添加属性:

WCHAR* szName
将是

<MarshalAs(UnmanagedType.LPWStr)> szName As String
szName作为字符串

您是否尝试站在“COLORREF”上并点击F12按钮?感谢您的回复,您能给我一个将作为COLORREF发送的数据示例吗?当我尝试类似“0X0000112”的东西时,它会拒绝。非常感谢!都分类好了。
WCHAR* szName
<MarshalAs(UnmanagedType.LPWStr)> szName As String