2

我正在阅读一些 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.
4

4 回答 4

6

它是一个 (VB6) 类型声明字符。请查看此问题以获取有关这些内容的更多详细信息。

在您的示例 VB6 代码中,它强制0Long(4 个字节),否则它将为Integer(2 个字节)

这与再次使用 VB6 代码执行这种长手方法相同:

Dim lParam as Long
lParam = 0
ObjFont = SendMessage(hwnd, WM_GETFONT, 0, lParam)
于 2012-08-10T14:39:59.330 回答
6

在您的具体示例中,是的,它相当于IntPtr.Zero在 C# 中。

它是 VB6 的“空句柄值”,GetDC使用它来返回整个屏幕的设备上下文。

于 2012-08-10T14:45:43.063 回答
3

这相当于传递NULLGetDC()which 指示函数返回hDC整个屏幕的,所以IntPtr.Zero是等价的。

于 2012-08-10T14:44:19.187 回答
0

这和Clng(0):) 就像下面的人说的一样;D

于 2012-08-10T14:42:06.187 回答