首页
社区
课程
招聘
[求助]谁能解决这个问题,高难度!
2014-11-9 21:31 6696

[求助]谁能解决这个问题,高难度!

2014-11-9 21:31
6696
在 Windows 操作系统的窗口应用程序中,窗口的标题栏最左边,有一个“系统图标”,它是非客户区“系统菜单”的位置,当点击后会出现一个系统菜单,可是如果快速双击,则会关闭掉这整个窗口,而现在我的应用程序中必须要在该“系统菜单”位置自绘一个按钮,这样就容易让用户误触到这个按键。都说看雪高手入云入雾,不知道谁能给个解决方案,前面已经测试过了拦截非客户区位置,依然无效,给解决方案的请先自己测试下先,我很多方案都失败了。先谢过了!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (24)
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
AioliaSky 1 2014-11-9 23:36
2
0
让大家好奇的是,为什么必须要在该“系统菜单”位置自绘一个按钮?
雪    币: 85
活跃值: (51)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
grusirna 1 2014-11-10 01:37
3
0
楼主还在用MFC吧。。。。现在的DUILIB库应该听过吧,那才叫窗口自绘,所有功能都是绘制的,没有一个控件,现在的QQ,360的界面全都是自绘。。你要想搞自绘,你得用界面库,directUI,百度去吧。。。
这种问题在搞界面库人的眼里都不叫事。。你让看雪的大牛开着挖掘机炒菜?不要以为都是蓝翔毕业的
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whnet 2014-11-10 08:56
4
0
印象中。 那个快速双击的关闭也要走onclose 的流程。  所以你创建一个不能关闭的窗口(也就是disable 掉onclose)就行了。

然后自己加一个关闭的按钮,在按钮里面自己关窗口。
雪    币: 223
活跃值: (83)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
newo 1 2014-11-10 10:54
5
0
看来这个问题还真是不好解决啊,这么多年了。
感谢兄台的意见,亲,请测试下了再告诉我吧,谢谢你了,真的必须要在这里自绘的,而且必须是用 API 来绘的,要求就是这样,没有太多的为什么。求显示下才华!
雪    币: 49
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
lordnone 2014-11-10 22:36
6
0
OnNcPaint?
雪    币: 223
活跃值: (83)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
newo 1 2014-11-10 22:38
7
0
不行,试过了。
雪    币: 478
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cnxxm 2014-11-10 22:41
8
0
不用系统自带的标题栏,仿一个出来
雪    币: 223
活跃值: (83)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
newo 1 2014-11-11 08:08
9
0
谢谢 CNXXM ,这个是想法很好,在一般的应用程序中就足够了,但是这我的目前这个应用程序中,是必须要而且一定要用系统的标题栏的,没有办法,只能这样。苦啊!
雪    币: 766
活跃值: (420)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
FishSeeWater 11 2014-11-11 08:19
10
0
"可是如果快速双击,则会关闭掉这整个窗口,"
哈哈,长见识了。。以前还没发现这功能呢。。。
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
riyuexian 2014-11-11 08:39
11
0
Programming Windows, Figure, 14-15
雪    币: 478
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cnxxm 2014-11-14 11:14
12
0
系统标题栏  有什么特殊么?就是一个右键菜单吧   菜单也是可以仿的呀
雪    币: 602
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kangcin 2014-11-14 11:21
13
0
............................................
雪    币: 7651
活跃值: (493)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
achillis 15 2014-11-14 11:45
14
0
你们的界面都好高端大气哦。。。
雪    币: 223
活跃值: (83)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
newo 1 2014-11-14 23:19
15
0
非常感谢各位达人的回复,问题的关键不在要不要模仿,而在于如何解决这个系统留下来的bug,模仿是不太难的,而要解决这个问题,可能会涉及到一些系统调试上的知识,这才有点难度。
雪    币: 223
活跃值: (83)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
newo 1 2014-11-16 23:41
16
0
我知道一定有人能解决的
雪    币: 1152
活跃值: (847)
能力值: ( LV8,RANK:150 )
在线值:
发帖
回帖
粉丝
freakish 1 2014-11-19 10:13
17
0
楼主是在装逼还是在解决问题,我开始怀疑?
雪    币: 86
活跃值: (60)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
zhansq 2014-11-19 10:28
18
0
给楼主一种土方法吧!钻个牛角尖---》
截获鼠标事件,标题栏那个地方禁止用户双击。估计这样就能解决你的问题,
雪    币: 223
活跃值: (83)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
newo 1 2014-11-19 11:08
19
0
这种办法早试过了,无效,可能还是只有调试操作系统才行。
雪    币: 39
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ghvn 2014-11-19 11:33
20
0
截获WM_NCPAINT消息绘画行不?
雪    币: 223
活跃值: (83)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
newo 1 2014-11-19 12:36
21
0
截获 WM_NCPAINT 只能用于绘画,而不能管理鼠标双击,这里的问题在于鼠标消息的处理,USER32.DLL 中的窗口缺省处理函数直接处理了针对“系统菜单”图标的双击的处理,而且无法通过消息拦截来处理这个双击,我估计是系统 BUG
雪    币: 39
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ghvn 2014-11-19 14:24
22
0
那把系统菜单屏蔽了能好使么?用GetWindowLong(hWnd, GWL_STYLE);
and eax, not WS_SYSMENU
SetWindowLong.....
雪    币: 86
活跃值: (60)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
zhansq 2014-11-19 14:35
23
0
给楼主一种土方法吧!钻个牛角尖---》
截获鼠标事件,标题栏那个地方禁止用户双击。估计这样就能解决你的问题,

这方法可以实现,楼主如果不行,只能说明你的思路不对。
雪    币: 39
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ghvn 2014-11-19 14:44
24
0
刚刚试了一下。。可以尝试吧系统菜单的关闭那项删了,只是这样右上角的关闭也不好使了,那就自己绘一个关闭按钮把。。。也算一种解决办法
雪    币: 223
活跃值: (83)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
newo 1 2014-11-20 14:36
25
0
高声寻呼一下达人。
游客
登录 | 注册 方可回帖
返回