| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 753 人关注过本帖
标题:.ControlBox指定是否在表单左上角显示程序图标,以及是否在表单右上角显示最 ...
只看楼主 加入收藏
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:330
注 册:2013-10-4
结帖率:100%
收藏
 问题点数:0 回复次数:7 
.ControlBox指定是否在表单左上角显示程序图标,以及是否在表单右上角显示最小化、最大化、还原和关闭按钮
.ControlBox属性:指定是否在表单左上角显示程序图标,以及是否在表单右上角显示最小化、最大化、还原和关闭按钮

那啥……能否指定:
当用户在表单左上角的程序图标上单击时,不弹出控制菜单【还原/移动/大小/最小化/最大化//关闭】?
毕竟那个控制菜单是Windows 3.2年代的产物,2020年代的人似乎并不需要它,可特别烦人的是:
在某些情况下,它碍我事了。
顶它不顺,却又干它不掉……狠不爽的说。

求教:
不知有无API,能否SendMessage个参数过去,将控制菜单关掉?
然后世界从此就清净啦。
搜索更多相关主题的帖子: 指定 表单 还原 显示 是否 
2023-03-27 12:27
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
可以改变成自己的菜单 或 删除掉
2023-03-27 13:38
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:330
注 册:2013-10-4
收藏
得分:0 
自己查了一下,可能用这个API:
SetWindowLong(thisForm.hWnd, (-16), windowStyles)
不过很可惜,查了一遍windowStyles属性值,没找到想要的“控制菜单”相关值:
https://learn.
2023-03-27 14:46
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
窗口样式是 WS_SYSMENU equ 80000h
VFP的ControlBox应该是设置WS_SYSMENU样式的效果,去掉WS_SYSMENU样式相当于ControlBox=.f.,这不是你想要的。
如果想保留标题图标和右上角按钮,可以拦截消息。

2023-03-27 15:25
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2023-3-27 15:25:50的发言:

窗口样式是 WS_SYSMENU equ 80000h
VFP的ControlBox应该是设置WS_SYSMENU样式的效果,去掉WS_SYSMENU样式相当于ControlBox=.f.,这不是你想要的。
如果想保留标题图标和右上角按钮,可以拦截消息。


确实,我想保留标题图标和右上角的几个按钮,只是想屏蔽左上角控制菜单。
2023-03-27 15:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
去掉WS_SYSMENU样式就是这样子,与ControlBox=.f.一样
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
DECLARE long GetWindowLong IN user32 long,long
DECLARE long SetWindowLong IN user32 long,long,long
of = CREATEOBJECT("form1")
of.show(1)
RETURN

DEFINE CLASS form1 as Form
    ADD OBJECT cmd as commandbutton 
    PROCEDURE init
        SetWindowLong(this.HWnd, -16, BITAND(GetWindowLong(this.HWnd,-16), BITNOT(0x80000)))
    ENDPROC
    PROCEDURE cmd.click
        thisform.release
    ENDPROC 
ENDDEFINE
2023-03-27 15:32
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏(1)
得分:0 
试了一下,删除菜单也会将右上角的按钮删除掉。
只好拦截点击图标消息和右击标题消息。顶层表单右击标题会弹出菜单,不是顶层表单好像没有。
程序代码:
DECLARE long SendMessage IN User32 long,long,long,long
of = CREATEOBJECT("form1")
of.show
READ EVENTS 
RETURN

DEFINE CLASS form1 as Form
    ShowWindow = 2
    AutoCenter = 1
    
    PROCEDURE Destroy
        CLEAR EVENTS 
    ENDPROC
    
    PROCEDURE Init
        BINDEVENT(this.hWnd, 0x00A4, this, "myMenuMsg")    && WM_NCRBUTTONDOWN    equ 00A4h
        BINDEVENT(this.hWnd, 0x0112, this, "myMenuMsg")    && WM_SYSCOMMAND       equ 0112h
    ENDPROC

    PROCEDURE myMenuMsg(hWnd, Msg, wParam, lParam)
        IF (Msg==0x00A4) OR (Msg==0x0112 AND wParam==0xF093)
            RETURN 
        ENDIF 
        SendMessage(hWnd, Msg, wParam, lParam)
    ENDPROC
ENDDEFINE


2023-03-27 16:31
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2023-3-27 16:31:29的发言:

试了一下,删除菜单也会将右上角的按钮删除掉。
只好拦截点击图标消息和右击标题消息。顶层表单右击标题会弹出菜单,不是顶层表单好像没有。
DECLARE long SendMessage IN User32 long,long,long,long
of = CREATEOBJECT("form1")
of.show
READ EVENTS
RETURN

DEFINE CLASS form1 as Form
    ShowWindow = 2
    AutoCenter = 1
   
    PROCEDURE Destroy
        CLEAR EVENTS
    ENDPROC
   
    PROCEDURE Init
        BINDEVENT(this.hWnd, 0x00A4, this, "myMenuMsg")    && WM_NCRBUTTONDOWN    equ 00A4h
        BINDEVENT(this.hWnd, 0x0112, this, "myMenuMsg")    && WM_SYSCOMMAND       equ 0112h
    ENDPROC

    PROCEDURE myMenuMsg(hWnd, Msg, wParam, lParam)
        IF (Msg==0x00A4) OR (Msg==0x0112 AND wParam==0xF093)
            RETURN
        ENDIF
        SendMessage(hWnd, Msg, wParam, lParam)
    ENDPROC
ENDDEFINE


噢,原来是这样!又学了一招!
非常感谢吹版!
2023-03-27 16:48
快速回复:.ControlBox指定是否在表单左上角显示程序图标,以及是否在表单右上角 ...
数据加载中...
 
   



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

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