MoveWindow移开至屏幕外 怎样将窗体重新移回原来的位置....急...

evjen 2009-01-16 08:27:23
如题(屏幕外,原来的位置)
...全文
310 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
嗷嗷叫的老马 2009-02-05
  • 打赏
  • 举报
回复
不管有多少个独立窗体,你移动前肯定都知道它们的句柄撒!不然MoveWindow怎么工作!

那么~~~~~~~~~~~~~移动前,根据每个句柄保存那个窗体原来的位置不就行了!

取窗体位置信息请看4楼.
evjen 2009-02-01
  • 打赏
  • 举报
回复
谢谢楼上的啊
我再试试看的
Tiger_Zhao 2009-01-20
  • 打赏
  • 举报
回复
Option Explicit

Private m_WinRectCollection As Collection

'移出并保存坐标
Sub MoveOut(ByVal hWndTarget As Long)
Dim rc As RECT

GetWindowRect hWndTarget, rc
rc.Right = rc.Right - rc.Left 'width
rc.bottom = rc.bottom - rc.Top 'height

If m_WinRectCollection Is Nothing Then
Set m_WinRectCollection = New Collection
End If
m_WinRectCollection.Add rc.Left & "," & rc.Top & "," & rc.Right & "," & rc.bottom, _
"K" & Hex(hWndTarget)


MoveWindow hWndTarget, 10000, 10000, rc.Right, rc.Top, 1
End Sub

'移入并恢复坐标
Sub MoveIn(ByVal hWndTarget As Long)
Dim sKey As String
Dim a() As String

sKey = "K" & Hex(hWndTarget)
a = Split(m_WinRectCollection(sKey), ",")
m_WinRectCollection.Remove sKey

MoveWindow hWndTarget, CLng(a(0)), CLng(a(1)), CLng(a(2)), CLng(a(3)), 1
End Sub
evjen 2009-01-19
  • 打赏
  • 举报
回复
楼上的可以写个小demo么
evjen 2009-01-19
  • 打赏
  • 举报
回复
楼上的可以写个小demo么
cnzdgs 2009-01-19
  • 打赏
  • 举报
回复
定义一个结构,或者用数组也可以,用GetWindowRect一次得到左、上、右、下的坐标值,减一下就可以求出宽和高,或者用SetWindowPos更方便。
evjen 2009-01-17
  • 打赏
  • 举报
回复
看楼顶和7楼...
evjen 2009-01-17
  • 打赏
  • 举报
回复

这个是获取多句柄 移动多窗体的代码

Tmp_Hwnd = FindWindow(ByVal 0&, ByVal 0&)
Do While Tmp_Hwnd <> 0
Call GetWindowThreadProcessId(Tmp_Hwnd, Tmp_Pid)
If Tmp_Pid = pid Then
If IsWindowVisible(Tmp_Hwnd) <> 0 Then
GetPidFindHwnd = Tmp_Hwnd
MoveWindow GetPidFindHwnd, 10000, 10000, 10000, 10000, False
End If
End If
Tmp_Hwnd = GetWindow(Tmp_Hwnd, GW_HWNDNEXT)
Loop

在这个代码中 如果是将窗体移回来 怎么写啊
因为这个窗体里面又有好多个子窗体 不是mdi窗体
怎么样将每次获得句柄的窗体的坐标4个点保存到数组 然后移回来就获取数组里面的值 并移动

或者大家有什么好的方法???

谢谢大家啊...
evjen 2009-01-17
  • 打赏
  • 举报
回复
这个窗体很复杂
像mdi又不像 总之窗体上面含有好多个窗体
哎...
oyljerry 2009-01-16
  • 打赏
  • 举报
回复
移动之前先记录位置坐标
GetWindowRect()
然后MoveWindow()移回来
yxr_2008 2009-01-16
  • 打赏
  • 举报
回复
获取这个窗体的位置用下面这个API:
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long

其中lpRect声明如下:
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
yxr_2008 2009-01-16
  • 打赏
  • 举报
回复
移之前先记下位置,然后怎么移走的怎么移回来
evjen 2009-01-16
  • 打赏
  • 举报
回复
老大 我要知道代码怎么弄
哎 我个郁闷啊
supergreenbean 2009-01-16
  • 打赏
  • 举报
回复
要你自己再move回来……

1,486

社区成员

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

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