GetDC(0&)对什么意味着什么?

时间:2012-08-10 14:38:40

标签: c# vb6

我正在阅读一些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 个答案:

答案 0 :(得分:6)

它是(VB6)类型声明字符。有关这些内容的详细信息,请查看this question

在您的示例VB6代码中,它强制0Long(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