【发布时间】:2016-12-02 20:09:50
【问题描述】:
我正在尝试在 VB.net 中使用 DWORD WINAPI GetMessagePos(void) 函数。
该函数返回一个可以存储在 VB.net 整数变量中的 DWORD(32 位)。引用 MSDN 文档:
x坐标在返回值的低位;这 y坐标是高阶短(都代表有符号值 因为它们可以在具有多个 监视器)
如何使用 vb.net 检索 x 和 y 坐标?
我正在尝试
<System.Runtime.InteropServices.DllImport("user32.dll", ExactSpelling:=True)>
Private Shared Function GetMessagePos() As Integer
End Function
Sub test()
Dim pos As Integer = GetMessagePos()
Try
Dim x As Short = CShort(pos And &HFFFF)
Dim y As Short = CShort(pos >> 16)
MessageBox.Show(x & ", " & y)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
但我不确定这是否是正确的方法。我正在尝试做一些测试,例如
Try
Dim x As Short = -1
Dim y As Short = 1
Dim i As Int32 = (y << 16) Or x
Dim x2 As Short = CShort(i And &HFFFF)
Dim y2 As Short = CShort(i >> 16)
MessageBox.Show(x & ", " & y)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
基本上我在 Short (Int16) 变量中编码 x 和 y 坐标,将它们放在 Int32 中,然后尝试解码。
但它似乎不起作用,因为它会导致溢出。
关于如何从GetMessagePos() WINAPI 解码 x-y 坐标的任何想法?
【问题讨论】:
标签: vb.net winapi c#-to-vb.net twain