我正在阅读一些VB6转换为C#。这条线是什么意思? 0&
是否等同于IntPtr.Zero
?
//'Get a Device context
hdc = GetDC(0&)
此值用于pinvoke,因此我不确定IntPtr.Zero
是否有意义,因为我们需要选择一些对象。
OldFont = SelectObject(hdc, ObjFont)
注意,ObjFont是通过
填充的//'Get the Window's font
ObjFont = SendMessage(hwnd, WM_GETFONT, 0, 0&)//there's that mysterious 0& agaain.
答案 0 :(得分:6)
它是(VB6)类型声明字符。有关这些内容的详细信息,请查看this question。
在您的示例VB6代码中,它强制0
为Long
(4个字节),否则它将是Integer
(2个字节)
这与再次使用VB6代码的长手法相同:
Dim lParam as Long
lParam = 0
ObjFont = SendMessage(hwnd, WM_GETFONT, 0, lParam)
答案 1 :(得分:6)
在您的具体示例中,是的,它相当于C#中的IntPtr.Zero
。
它是VB6的“空句柄值”,由GetDC用于返回整个屏幕的设备上下文。
答案 2 :(得分:3)
这相当于将NULL
传递给GetDC()
,指示函数返回整个屏幕的hDC
,因此IntPtr.Zero
等效
答案 3 :(得分:0)
它与Clng(0)
相同:)正如下面的那个人说的那样; D