首页
社区
课程
招聘
[原创][WM系统开发][基础知识]WM与Win32平台的差异[1]--"窗口"的概念
发表于: 2009-1-11 14:07 11368

[原创][WM系统开发][基础知识]WM与Win32平台的差异[1]--"窗口"的概念

2009-1-11 14:07
11368
Windows Mobile 中,窗口的概念与Win32平台有较大差异.在Win32平台,通常认为是"按钮"等控件的东西,在WM也是窗口.
如附图所示:红色椭圆圈起来的部分都是窗口.正中最大的一个,是File Explorer窗口的用户区;Storage Card那一块是File Explorer的子窗口;Up和Menu不是File Explorer的一部分,是在Z序上位于其上层,并依附于其存在的窗口,而且虽然其在Z序最高层,但不可能是"前景窗口";标题栏也是一个窗口.

为了说明这些,发出几个实验程序:
第一个程序运行后,会在3秒钟后关闭当前前景窗口的子窗口,然后在3秒钟后关闭前景窗口.可以看到子窗口被关闭的现象.
第二个程序会关闭Z序高于前景窗口的窗口,可以看到Up与Menu两个"按钮"变成一片空白,也不能再点击了.

至于右上角的小叉,这也与Win32平台的"关闭"功能不同,点击后,并没有把程序关闭,而只是调整了其Z序,让其Z序低于桌面,"躲藏"在桌面以下,只要改变桌面的尺寸,就能使其现身.
第三个程序就能看到这个现象,60秒后,桌面尺寸的改变会还原,不会损坏系统

根据以上所述可以得知:系统中总是有大量打开的窗口,有些有名字(如File Explorer),有些没有名字(如"Up"键),那么系统中到底有多少窗口是打开的呢?可以用EnumWindows函数枚举一下.
第四个程序进行了一个枚举,会不断用对话框显示当前系统打开的"有名窗口"的标题名,最后统计出有名窗口和无名窗口的数量.这个程序的执行结果也许会让你大吃一惊!(怎么这么多!)
并且,任意新开一个窗口,然后再运行本程序,都很可能会发现"有名窗口"和"无名窗口"增加的数量都不止一个

有了以上的实验及实验中得出的结论,也许大家对WM的"窗口"的概念有了一个与以前不同的认识.也就更容易理解,如何通过窗口禁用的方式,实现整个系统"假死机"状态!
第五个程序就通过枚举并禁用窗口,使得"触摸屏被禁用".这是在加百力发的"禁用触摸屏"一文中提出的想法(http://bbs.pediy.com/showthread.php?t=79976),只是当时回帖不能上传附件,今天就一并上传了.
这个程序要小心实验,最好不在要真机上运行,不然很麻烦.

本贴介绍了自己实验过程中发现的一些WM与Win32不同的特性,可能不全面,也可能有错误的理解.请大家指正!谢谢!

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 214
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
终于攒够10个帖子,可以发新主题了,不容易啊!
这么多年来,从来没有在一天之内发这么多帖子......

自己支持一个,然后继续闭关!
2009-1-11 14:09
0
雪    币: 622
活跃值: (65)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
3
好东西啊,支持一下下,我是菜鸟,我来学习。
2009-1-11 14:09
0
雪    币: 622
活跃值: (65)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
4
本来以为是沙发,原来不是,沙发自己坐了,
2009-1-11 14:10
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
5
不错的帖子!加油!
2009-1-12 12:10
0
雪    币: 217
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
"Windows Mobile 中,窗口的概念与Win32平台有较大差异.在Win32平台,通常认为是"按钮"等控件的东西,在WM也是窗口."

Win32中,“控件”也是窗口。这个和WM没什么不同。
2009-1-12 18:46
0
雪    币: 214
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
谢谢指点!

看来基本功相当不扎实,见笑了!

打算暂时不发贴了,多深入点研究再说.别又出低级错误闹笑话.

再次感谢!
2009-1-13 11:00
0
雪    币: 14
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习了,值得收藏
好东西要顶起来,让大家都看到
2009-6-26 01:34
0
雪    币: 69
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
都是窗口,没有差异~
2009-7-2 01:45
0
雪    币: 164
活跃值: (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
10
呵呵,其实Win32里所有东西也是窗口来的
2009-7-2 08:18
0
雪    币: 240
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
呵呵,要鼓励犯错的人,不犯错是很难有进步的。如果你永远是对的,则永远无法进步。
2009-7-2 09:00
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
12
是的。人非生而知之。

保持一种宽容的心态,关系也会更融洽。
2009-7-2 09:54
0
雪    币: 234
活跃值: (217)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
都是继承自 CWnd
2009-9-28 14:02
0
雪    币: 38
活跃值: (52)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
'按钮'也是窗口
2009-9-30 20:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
学习了,最近也在倒腾WM
2009-11-13 22:44
0
雪    币: 64
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
谢谢,在这里不仅学有所得。也感受了人与人之间的融洽
2010-1-26 18:04
0
游客
登录 | 注册 方可回帖
返回
//