如何让一个固定大小的窗口位与屏幕中央(相对任务栏)

superchpx 2005-01-27 10:09:51
有一个固定大小的窗体如何让它无论在任何分辨率下都左右相对屏幕边界,上下相对上屏幕边界和开始菜单任务栏边界居中?
...全文
113 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LittleLittleBoy 2005-01-27
  • 打赏
  • 举报
回复
好像不行,设它和整个屏幕居中可以,要相对任务栏边界好像难啊
ljhdi 2005-01-27
  • 打赏
  • 举报
回复
???
viena 2005-01-27
  • 打赏
  • 举报
回复
StartUpPosition属性设为2不可以吗?
lxgmag 2005-01-27
  • 打赏
  • 举报
回复
获取当前窗口大小,
获取当前显示器的分辨率,
然后定位其显示坐标。

以上就是我的思路,按此思路做试试行不行?
CatchWind 2005-01-27
  • 打赏
  • 举报
回复
Option Explicit
Private Declare Function SHAppBarMessage Lib "shell32.dll" _
(ByVal dwMessage As Long, pData As APPBARDATA) As Long

Private Const ABM_GETTASKBARPOS = &H5
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type APPBARDATA
cbSize As Long
hWnd As Long
uCallbackMessage As Long
uEdge As Long
rc As RECT
lParam As Long
End Type

Private Sub Form_Load()
Dim MyData As APPBARDATA

MyData.cbSize = Len(MyData)
Call SHAppBarMessage(ABM_GETTASKBARPOS, MyData)
'任務欄有三個邊都在屏幕外2個像素
With MyData.rc
If .Top > 0 Then '任務欄在最下面
Me.Move (Screen.Width - Width) \ 2, (.Top * Screen.TwipsPerPixelY - Height) \ 2
ElseIf .Bottom < Screen.Height \ Screen.TwipsPerPixelY Then '任務欄在頂上
Me.Move (Screen.Width - Width) \ 2, (Screen.Height - Height + .Bottom * Screen.TwipsPerPixelY) \ 2
ElseIf .Left > 0 Then '在最右邊
Me.Move (.Left * Screen.TwipsPerPixelX - Width) \ 2, (Screen.Height - Height) \ 2
Else
Me.Move (Screen.Width - Width + .Right * Screen.TwipsPerPixelX) \ 2, (Screen.Height - Height) \ 2
End If
End With
End Sub
CatchWind 2005-01-27
  • 打赏
  • 举报
回复
要先取得任務欄的位置及寬度.
Lonelywolf1899 2005-01-27
  • 打赏
  • 举报
回复
不管在什么分辨率下,任务栏占屏幕宽度的比例是不变的。

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧