Jiang's C++ Space
创作,也是一种学习的过程。
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
<
2010年7月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
公告
旧博客地址:http://blog.csdn.net/guogangj 新浪微博已经开通:http://weibo.com/guogangj
留言簿
(16)
给我留言
查看公开留言
查看私人留言
随笔分类
Android(1)
(rss)
Hello, Wiki(2)
(rss)
IT Technical Articles(4)
(rss)
Knowledge(27)
(rss)
Thinking/Other(8)
(rss)
Windows Embedded Programming(19)
(rss)
Windows Programming(15)
(rss)
随笔档案
2011年9月 (2)
2011年8月 (4)
2011年6月 (2)
2011年5月 (2)
2011年4月 (4)
2011年3月 (2)
2011年2月 (2)
2011年1月 (1)
2010年12月 (2)
2010年11月 (5)
2010年10月 (2)
2010年9月 (1)
2010年8月 (6)
2010年7月 (5)
2010年6月 (6)
2010年5月 (1)
2010年4月 (3)
2010年3月 (2)
2009年11月 (1)
2009年10月 (9)
2009年9月 (5)
2009年8月 (1)
2009年5月 (1)
2009年4月 (7)
最新随笔
1. 用VS2010发布ASP.net网站
2. 安装VS2010后VS2008无法调试Windows Mobile程序的问题
3. C#实现类似C++功能的困惑
4. 从C++到C#的一些注意事项
5. 在VMWare上装Mac(AMD CPU)最终没搞定……
6. gSOAP在Windows Mobile平台上的使用总结
7. 帮Windows Mobile实现gmtime,localtime,mktime和strftime
8. 用VC++访问文本文件
9. Windows Mobile上网设置详细图解
10. IE9无法完全关闭cleartype效果
最新评论
1. re: 图解数据结构(7)——二叉查找树及平衡二叉查找树
66666
--666
2. re: 帮Windows Mobile实现gmtime,localtime,mktime和strftime
拿走。
谢了。
--hotman_x
3. re: IE9无法完全关闭cleartype效果
现在win8也这个德行了。不知道微软在想什么。明显很多人极度反感的东西它非得坚持。很多人为了改这个甚至去修改注册表。
--讨厌DEARTYPE
4. re: 在VMWare上装Mac(AMD CPU)最终没搞定……[未登录]
用 Oracle VM VirtualBox
--Sam
5. re: C#实现类似C++功能的困惑[未登录]
使用可空类型
--Sam
6. re: 图解数据结构(10)——排序
顶一下,太厉害了。
--byrybye
7. re: IE9无法完全关闭cleartype效果
跟我一模一样!!!恨死cleartype了
--2222
8. re: IE9无法完全关闭cleartype效果[未登录]
我也极为反感,我不止是想放弃iE,如果不是兼容性的限制我立马放弃视窗系统.
--无名
9. re: 图解数据结构(8)——二叉堆
恩,同意@周冲 的说法,出堆的操作其实也就是把根节点出堆之后,最后一个节点放到跟节点然后进行下降操作。博主的入堆操作很好理解,赞一个。
--Greedydaam
10. re: 图解数据结构(8)——二叉堆
很容易理解,谢谢
--金马
按挂机键,程序窗口不隐藏
用过Windows Mobile的人都知道,一般情况下,按下挂机键(就是挂电话那个按键,通常是红色的),就相当于Windows XP中点了那个“显示桌面”的图标,所有窗口都最小化,桌面显示出来了,Windows Mobile中的“今日”(Today)就相当于Windows的桌面,按挂机键,“今日”就显示出来了,别的窗口都隐藏(最小化)。
这个效果我是想模仿一个叫Spb Home的桌面美化程序,用过Spb Home的都很清楚这是怎样一个效果。
那我现在有这么个需求,我希望我的程序不被挂机键隐藏,也就是说希望我的程序取代“今日”,在别的窗口都被隐藏或关闭的时候,我的程序窗口依旧显示。下面是我的思路轨迹:
做Windows编程出身的我首先想到WM_SHOWWINDOW消息,我程序的主窗口被最小化的时候应该能够收到这个消息,我只要对这个消息进行相关处理即可,但令我感到意外的是Windows Mobile似乎没有这个消息,到网上search,没有答案,纳闷……
没有WM_SHOWWINDOW,终归有别的吧?于是我用Windows CE Remote Spy观察一个窗口在按下挂机键时候接收到的消息,分析了多种情况后,我发现有一个消息确实是按下挂机键时候能接收到的,但这个消息没有在MSDN中被提及,我只知道它的值为0xC005。
响应这个消息,每次收到的时候调用一下SetForegroundWindow(),这么一来,果然奏效了!但问题来了,每次按挂机键的时候,屏幕总要闪一下,为什么?原因就是我的窗口收到0xC005消息的时候,它已经被隐藏了,我重新把它show出来当然要闪一下,这个效果并不理想。
继续想办法,那能不能通过钩子来重定义挂机键的动作呢?后来想想不妥,因为我并不是要屏蔽或者修改挂机键的功能,我只是不想让我的窗口被它隐藏而已,况且钩子是undocumented的东西,恐怕不太好。
再思考,如果挂机键的功能就是被默认地定义为隐藏所有窗口,那我如何阻止它呢?这是不太可能的吧?所以我想来想去还是想到Spb Home了,看看Spb Home的窗口究竟有什么不同,结果还真的有了新发现,问题也因此得解。大家看:
看窗口风格这个值,0x90010000,跟我的程序最大的不同是:首bit是1!第一个bit是什么意思呢?是WS_POPUP,于是我有样学样,在我的窗口上加上WS_POPUP属性,就OK了!WS_POPUP窗口不会自动最大化显示,我们要指定它的显示位置和大小,这是跟overlapped window的不同,关于popup,overlapped这些东西,我有另一篇比较完整的文章来阐述的,地址是:
http://blog.csdn.net/guogangj/archive/2008/12/06/3460267.aspx
问题终于解决了,没想到处理起来这么简单,但知道这么弄,却让我研究了好久。
posted on 2010-07-14 15:09
Jiang Guogang
阅读(618)
评论(0)
编辑
收藏
引用
所属分类:
Windows Embedded Programming
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
安装VS2010后VS2008无法调试Windows Mobile程序的问题
帮Windows Mobile实现gmtime,localtime,mktime和strftime
Windows Mobile上网设置详细图解
奇怪的Windows Mobile输入面板刷新问题
Windows Mobile的安全模型简介
浅析Windows Mobile内存机制
Windows Mobile中文拼音序
[转]谁用了我的内存--PPC RAM的缺失本质
WM_SIZE在WM_CREATE之前?
让窗口“最大化”显示
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © Jiang Guogang