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

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

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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

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

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

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