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

P.B*_*key 2 c# vb6

我正在读一些VB6转换为C#.这条线是什么意思?是0&相当于IntPtr.Zero

//'Get a Device context
hdc = GetDC(0&)
Run Code Online (Sandbox Code Playgroud)

这个值用于pinvoke,所以我不确定是否IntPtr.Zero有意义,因为我们需要选择一些对象.

OldFont = SelectObject(hdc, ObjFont)
Run Code Online (Sandbox Code Playgroud)

注意,ObjFont是通过填充的

//'Get the Window's font
ObjFont = SendMessage(hwnd, WM_GETFONT, 0, 0&)//there's that mysterious 0& agaain.
Run Code Online (Sandbox Code Playgroud)

Mat*_*lko 6

它是一个(VB6)类型声明字符.有关这些问题的详细信息,请查看此问题.

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

这与再做VB6代码的长手法相同:

Dim lParam as Long
lParam = 0
ObjFont = SendMessage(hwnd, WM_GETFONT, 0, lParam)
Run Code Online (Sandbox Code Playgroud)

  • @ P.Brian.Mackey来自MSDN:"如果参数为NULL,则获取整个屏幕的DC" (2认同)

ken*_*n2k 6

在您的具体示例中,是的,它等同IntPtr.Zero于C#.

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