编程论坛
注册
登录
编程论坛
→
VFP论坛
主表单关闭了titlebar,当windowstate=1时,如何最大化表单
radiofan
发布于 2021-02-09 10:11, 1311 次点击
主表单关闭了titlebar,当windowstate=1时,windows任务栏中并未显示该程序(titlebar=on时,任务栏中有),导致无法恢复(最大化),如何最小化到任务栏?谢谢
6 回复
#2
吹水佬
2021-02-09 20:29
在按钮事件中执行windowstate=1就没问题
还有无标题窗口最大化(windowstate=2)也会挡住任务栏
无计的话就用 API SystemParametersInfo() 的 SPI_GETWORKAREA 获取显示器工作区大小,再去调整窗口状态
#3
radiofan
2021-02-09 21:10
以下是引用
吹水佬
在2021-2-9 20:29:17的发言:
在按钮事件中执行windowstate=1就没问题
还有无标题窗口最大化(windowstate=2)也会挡住任务栏
无计的话就用 API SystemParametersInfo() 的 SPI_GETWORKAREA 获取显示器工作区大小,再去调整窗口状态
暂时就先titlebar = on吧
,有空时再搞。多谢!
#4
吹水佬
2021-02-10 09:16
看看这样能否满足要求,win10 + VFP9 测试过,编译成EXE运行
程序代码:
DECLARE
LONG
PostMessage
IN
User32
LONG
,
LONG
,
LONG
,
LONG
of
=
CREATEOBJECT(
'
Form1
'
)
of
.Show
READ
EVENTS
RETURN
DEFINE CLASS form1
AS
form
Desktop
=
.T.
ShowWindow
=
2
TitleBar
=
0
ADD
OBJECT cmd
as
commandbutton
WITH
left=
10
,
top
=
10
,height
=
22
,caption
=
"关闭"
PROCEDURE
Activate
PostMessage(this.hWnd,
0x0112
,
0xF020
,
0
)
ENDPROC
PROCEDURE
Destroy
CLEAR EVENTS
ENDPROC
PROCEDURE
cmd.Click
thisform.Release
ENDPROC
ENDDEFINE
#5
radiofan
2021-02-11 20:58
以下是引用
吹水佬
在2021-2-10 09:16:20的发言:
看看这样能否满足要求,win10 + VFP9 测试过,编译成EXE运行
DECLARE LONG PostMessage IN User32 LONG, LONG, LONG, LONG
of = CREATEOBJECT('Form1')
of.Show
READ EVENTS
RETURN
DEFINE CLASS form1 AS form
Desktop = .T.
ShowWindow = 2
TitleBar = 0
ADD OBJECT cmd as commandbutton WITH left=10,top=10,height=22,caption="关闭"
PROCEDURE Activate
PostMessage(this.hWnd, 0x0112, 0xF020, 0)
ENDPROC
PROCEDURE Destroy
CLEAR EVENTS
ENDPROC
PROCEDURE cmd.Click
thisform.Release
ENDPROC
ENDDEFINE
多谢指点!
只有本站会员才能查看附件,请
登录
这个是运行程序的表单title,现在是titlebar=on,点击最小化按钮后,会在windows任务栏上显示程序图标,点击程序图标会恢复正常显示,但是,当我设置表单titlebar=off后,代码运行windowstate=1最小化后,程序图标并未在任务栏上存在,因此无法恢复,必须在任务管理器中恢复。主表单上dock了工具栏,不知是否这个原因?
[此贴子已经被作者于2021-2-11 21:07编辑过]
#6
吹水佬
2021-02-12 00:39
回复 5楼 radiofan
没有工具栏情况也一样。
上面的测试代码是在无标题窗口模拟点击“最小化”
#7
radiofan
2021-02-12 15:55
以下是引用
吹水佬
在2021-2-12 00:39:05的发言:
没有工具栏情况也一样。
上面的测试代码是在无标题窗口模拟点击“最小化”
好的,我试试。祝新年快乐!
1