如何捕获窗体缩放事件?

jiangqiaohua 2008-03-24 01:09:10
窗体上有最大化和还原窗口

同时还可以双击标题栏进行缩放还原

如何捕获 双击标题栏进行缩放还原这个事件

我要做的是 比如比如 把窗体拉成宽度 300

然后放大 在缩小 这个时候 宽度还是 300

这个是自动变成 300的还是程序控制的?

我要他下次启动的时候就是上次关闭的尺寸
...全文
239 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangqiaohua 2008-03-24
  • 打赏
  • 举报
回复
Chen8013 的可以实现了 谢谢 
forbearORfolie 2008-03-24
  • 打赏
  • 举报
回复
把normal的数据也写进文件,在resize事件中调用
舉杯邀明月 2008-03-24
  • 打赏
  • 举报
回复
如果用我的方法:
是你的逻辑问题!

With tIniFile
.IniFile = AppPath & MainIniName
Call .WriteKey("WindowState", "State", Str(Me.WindowState))
Call .WriteKey("WindowState", "Left", Str(Me.Left / 15))
Call .WriteKey("WindowState", "Top", Str(Me.Top / 15))
Call .WriteKey("WindowState", "Width", Str(Me.Width / 15))
Call .WriteKey("WindowState", "Height", Str(Me.Height / 15))
End With


你不能在退出时取窗口尺寸,而应该是在Form_Resize()事件中,WindowState为Normal时把它保存到四个变量中,
退出时取当前的窗口状态,窗口尺寸从变量中取。
jiangqiaohua 2008-03-24
  • 打赏
  • 举报
回复
在 Form_Resize() 事件中,监视并记录窗口的Form.WindowState
并且WindowState值为Normal时,记录(或更新记录)窗口的Left、Top、Width、Height。

程序退出时,可保存下窗口的WindowState、Left、Top、Width、Height的值。
下次启动时,先恢复窗口的Left、Top、Width、Height,再恢复窗口的WindowState,

这样,可“完全还原”以前的状态了。


你这样无法最大化


myjian
我的意思 是 我已经实现了 关闭记录窗口大小
比如 窗口是
Normal时关闭 大小为300*400
打开后还是 300*400


但窗口为最大化时关闭
打开后当然还是最大化

但此时无法将它 Normal


这是我测试的全部代码



Private Sub Form_Load()
Dim tIni As New cINIFile
tIni.IniFile = AppPath & MainIniName
'MsgBox "aa"
'设置窗体大小为上次保存退出的大小
'jerry 2008年3与14号
Dim State, IniLeft, IniTop, IniWidth, IniHeight As Long
State = tIni.ReadInt("WindowState", "State", 0)
IniLeft = tIni.ReadInt("WindowState", "Left", 0)
IniTop = tIni.ReadInt("WindowState", "Top", 0)
IniWidth = tIni.ReadInt("WindowState", "Width", 0)
IniHeight = tIni.ReadInt("WindowState", "Height", 0)


'Me.WindowState = State
Me.Left = IniLeft * 15
Me.Top = IniTop * 15
Me.Width = IniWidth * 15
Me.Height = IniHeight * 15
End Sub

Private Sub Form_Unload(Cancel As Integer)
Call SaveWindowState
End Sub
'============窗口位置============================
Public Sub SaveWindowState()
Dim tIni As New cINIFile
tIni.IniFile = AppPath & MainIniName
Dim tIniFile As cINIFile
Set tIniFile = New cINIFile

With tIniFile
.IniFile = AppPath & MainIniName
Call .WriteKey("WindowState", "State", Str(Me.WindowState))
Call .WriteKey("WindowState", "Left", Str(Me.Left / 15))
Call .WriteKey("WindowState", "Top", Str(Me.Top / 15))
Call .WriteKey("WindowState", "Width", Str(Me.Width / 15))
Call .WriteKey("WindowState", "Height", Str(Me.Height / 15))
End With
End Sub
'===========
嗷嗷叫的老马 2008-03-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jiangqiaohua 的回复:]
我现在是

可以实现启动后为上次保存退出的窗体大小

可出现一个问题

最大化后 在点还原后就无法还原了

如何解决这个问题
[/Quote]

无法还原,检查你自己的逻辑.
舉杯邀明月 2008-03-24
  • 打赏
  • 举报
回复
在 Form_Resize() 事件中,监视并记录窗口的Form.WindowState
并且WindowState值为Normal时,记录(或更新记录)窗口的Left、Top、Width、Height。

程序退出时,可保存下窗口的WindowState、Left、Top、Width、Height的值。
下次启动时,先恢复窗口的Left、Top、Width、Height,再恢复窗口的WindowState,

这样,可“完全还原”以前的状态了。
jiangqiaohua 2008-03-24
  • 打赏
  • 举报
回复
我现在是

可以实现启动后为上次保存退出的窗体大小

可出现一个问题

最大化后 在点还原后就无法还原了

如何解决这个问题
东方之珠 2008-03-24
  • 打赏
  • 举报
回复
用API函数IsZoomed判断,结合ShowWindow使用。
东方之珠 2008-03-24
  • 打赏
  • 举报
回复
如何捕获窗体缩放事件? 用API判断速度较快!
jiangqiaohua 2008-03-24
  • 打赏
  • 举报
回复
我在form_load事件里加了
'jerry 2008年3与14号
Dim State, IniLeft, IniTop, IniWidth, IniHeight As Long
State = tIni.ReadInt("WindowState", "State", 0)
IniLeft = tIni.ReadInt("WindowState", "Left", 0)
IniTop = tIni.ReadInt("WindowState", "Top", 0)
IniWidth = tIni.ReadInt("WindowState", "Width", 0)
IniHeight = tIni.ReadInt("WindowState", "Height", 0)


Me.WindowState = State
Me.Left = IniLeft * 15
Me.Top = IniTop * 15
Me.Width = IniWidth * 15
Me.Height = IniHeight * 15

可以实现启动后 为上次保存退出的窗体大小

可出现一个问题

最大化后 在点还原后就无法还原了

如何解决这个问题
cbm6666 2008-03-24
  • 打赏
  • 举报
回复
如同1F所说的 不用捕获窗体的缩放事件, 窗体一有变化, Form_Resize事件自动响应.

Private Sub Form_Resize()
Me.Caption = Me.Width & " " & Me.Height
End Sub

在窗体关闭时 Form_Unload事件中,记录下来

1.写到 .txt记事本
2.写到 注册表
3.写到任何一张图片里面

yangao 2008-03-24
  • 打赏
  • 举报
回复
下次窗体启动时读取然后设置下即可
yangao 2008-03-24
  • 打赏
  • 举报
回复
按你想实现的记录上次窗口尺寸的功能
不用捕获窗体的缩放事件(Form_Resize)
只需要在窗体关闭时记录下窗口的尺寸即可
记录到DB或文件

7,785

社区成员

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

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