| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1176 人关注过本帖
标题:主表单关闭了titlebar,当windowstate=1时,如何最大化表单
只看楼主 加入收藏
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
结帖率:76.47%
收藏
已结贴  问题点数:20 回复次数:6 
主表单关闭了titlebar,当windowstate=1时,如何最大化表单
主表单关闭了titlebar,当windowstate=1时,windows任务栏中并未显示该程序(titlebar=on时,任务栏中有),导致无法恢复(最大化),如何最小化到任务栏?谢谢
搜索更多相关主题的帖子: 任务栏 最小化 关闭 最大化 表单 
2021-02-09 10:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:20 
在按钮事件中执行windowstate=1就没问题
还有无标题窗口最大化(windowstate=2)也会挡住任务栏
无计的话就用 API SystemParametersInfo() 的 SPI_GETWORKAREA 获取显示器工作区大小,再去调整窗口状态
2021-02-09 20:29
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
收藏
得分:0 
以下是引用吹水佬在2021-2-9 20:29:17的发言:

在按钮事件中执行windowstate=1就没问题
还有无标题窗口最大化(windowstate=2)也会挡住任务栏
无计的话就用 API SystemParametersInfo() 的 SPI_GETWORKAREA 获取显示器工作区大小,再去调整窗口状态


暂时就先titlebar = on吧,有空时再搞。多谢!
2021-02-09 21:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏(1)
得分:0 
看看这样能否满足要求,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

2021-02-10 09:16
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
收藏
得分:0 
以下是引用吹水佬在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编辑过]

2021-02-11 20:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
回复 5楼 radiofan
没有工具栏情况也一样。
上面的测试代码是在无标题窗口模拟点击“最小化”
2021-02-12 00:39
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
收藏
得分:0 
以下是引用吹水佬在2021-2-12 00:39:05的发言:

没有工具栏情况也一样。
上面的测试代码是在无标题窗口模拟点击“最小化”


好的,我试试。祝新年快乐!
2021-02-12 15:55
快速回复:主表单关闭了titlebar,当windowstate=1时,如何最大化表单
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019358 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved