包含vb.netrect的词条

VB.NET想用GetWindowRECT获取某窗口的坐标,但测试结果是L,T,R,B显示都是0,0,0,0

很简单,原因有二。第一,VB里long是32位,但是VB.NET里是64位,Dim ksWND As Integer才对。第二,VB在API里默认传址,而VB.NET默认传值,所以API里要添加Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,添加"ByRef" lpRect As RECT) As Integer

站在用户的角度思考问题,与客户深入沟通,找到龙川网站设计与龙川网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、网站建设、企业官网、英文网站、手机端网站、网站推广、空间域名、网络空间、企业邮箱。业务覆盖龙川地区。

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,byref lpRect As RECT) As Integer

Private Structure RECT

Dim Left As Integer

Dim Top As Integer

Dim Right As Integer

Dim Bottom As Integer

End Structure

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim ksWND As integer

Dim ksTitle As String

Dim winS As RECT

If TextBox1.Text "" Then

ksTitle = TextBox1.Text

ksWND = FindWindow(vbNullString, ksTitle)

GetWindowRect(ksWND, winS)

MsgBox("左上角坐标(" winS.Left "," winS.Top ")" vbCrLf "右下角坐标(" winS.Right "," winS.Bottom ")" vbCrLf "窗口高" winS.Bottom - winS.Top "窗口宽" winS.Right - winS.Left)

Else

MsgBox("请填写窗口名称")

End If

End Sub

vb.net中GetClientRect()函数的问题

对不起,我没有学过vb.net,但是学过vb,希望这个可以

解决您程序的毛病。首先您注意以下两种GetClientRect

声明的方法:

Option Explicit

Private Declare Function GetClientRect Lib "user32" ( _

ByVal hwnd As Long, _

ByRef lpRect As RECT _

) As Long

Private Type RECT

Left As Long

Top As Long

Right As Long

Bottom As Long

End Type

Private Sub Form_Load()

Dim r As RECT

Me.AutoRedraw = True

GetClientRect Me.hwnd, r

Print r.Left

Print r.Right

Print r.Top

Print r.Bottom

End Sub

----------------------------------------------------------------------------

Option Explicit

Private Declare Function GetClientRect Lib "user32" ( _

ByVal hwnd As Long, _

ByVal lpRect As Long _

) As Long

Private Type RECT

Left As Long

Top As Long

Right As Long

Bottom As Long

End Type

Private Sub Form_Load()

Dim r As RECT

Me.AutoRedraw = True

GetClientRect Me.hwnd, VarPtr(r)

Print r.Left

Print r.Right

Print r.Top

Print r.Bottom

End Sub

看出问题了没有,就在GetClientRect的第二个参数上:

一个是按地址传递,另一个是按值传递:

ByRef lpRect As RECT 用 GetClientRect Me.hwnd, r

ByVal lpRect As Long 用 GetClientRect Me.hwnd, VarPtr(r)

据我所知vb.net按值传递的比较多,应该用VarPtr获取RECT类型

(结构体)的指针,然后传递。

希望能对你有所帮助。

VB.net GetWindowRect 问题

把这个函数改成这样就好了Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" (ByVal hwnd As Integer, ByRef lpRect As RECT) As Integer


网页名称:包含vb.netrect的词条
本文URL:http://bzwzjz.com/article/hhcgdh.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站制作 网站建设方案 成都网站制作 企业网站建设 营销型网站建设 高端品牌网站建设 成都网站建设 专业网站建设 网站建设费用 网站制作报价 app网站建设 重庆电商网站建设 手机网站制作 成都网站设计 成都网站设计 成都网站制作 成都网站设计制作公司 成都网站制作 阿坝网站设计 重庆网站设计 成都定制网站建设 手机网站制作设计