[With a correction made on June 26.]
From http://mobileopportunity.blogspot.com/2008/06/symbian-changes-everything-and-nothing.html
The Symbian Foundation announcement today is a fascinating change in business strategy, but I'm not sure if it will help or hurt Nokia in the long run. I think something like this was probably necessary just to clean up the mess in Symbian's ownership structure. If Nokia can make the new structure work, it'll be a milestone in the use of open source by large tech companies, but I'm not sure it helps Nokia win the smartphone war.
What happened
--Nokia is buying Symbian. Everyone currently working at Symbian becomes a Nokia employee after the deal closes. Nokia said it will spend the next six months deciding "how we will use the unique talent we are gaining."
[By the way, the buyout by Nokia is a change I said was possible two and a half years ago when it first became clear that some of Symbian's owners wanted out (link). I am astounded that the change took so long. I looked back at my old post a few months ago and thought, "wow, I really got that one wrong." Now I am relieved to say that I was not wrong, I was merely prematurely correct ;-) ]
--Symbian OS will become free. Nokia's Symbian-related assets, including both Symbian OS and the S60 interface, will be contributed to the new Symbian Foundation, a nonprofit that will control the Symbian platform. So Nokia writes the code and then gives it to the foundation for free.
Founding members of the foundation include: AT&T, LG, Motorola, Nokia, DoCoMo, Samsung, SonyEricsson, ST Micro, TI, and Vodafone. It's very interesting to see some operators in the mix, especially AT&T.
The foundation will open source the new Symbian platform over a two year period. So eventually Symbian will be available for free.
The new Symbian Platform will have a broader scope than the current Symbian OS. It will include:
-An application suite (previously controlled by licensees)
-Runtimes (including Webkit, Flash, Silverlight, and Java; previously licensee-controlled)
-UI framework (formerly controlled by licensees)
-Middleware
-OS
-Tools, SDK, and application signing (previously shared between Symbian and licensees)
--UIQ is dead. SonyEricsson's UIQ technology, and NTT DoCoMo's MOAP, both of which are user interface layers written on top of Symbian, will also be contributed to the foundation, which will incorporate pieces of them into S60. The new Symbian foundation partners said at the press conference, "We will reposition UIQ in the new ecosystem." That's seems to be a face-saving way of saying, "UIQ is dead." Confirming that, UIQ announced immediate plans to lay off more than half its employees (link).
These are huge changes, even though they'll take a couple of years to implement. We won't get the first release of the new merged platform until 2010, although the partners say S60 and native Symbian apps will continue to run in the future, so they hope many more developers will create Symbian apps today in anticipation of future growth.
--Nokia will continue to control Symbian development. This is my interpretation, not something they announced. Technically, control over Symbian and S60 passes to the new Symbian Foundation, with product plans controlled by a managing board and councils made up of foundation members. This makes Symbian sound independent. But Nokia will employ most of the people maintaining and extending Symbian and S60, and could divert them to other Nokia projects if it ever dislikes the direction of the foundation. More to the point, the whitepaper explaining the new foundation says, "device manufacturers will be eligible for seats based on number of Symbian Foundation platform-based devices shipped, with the other board members selected by election and contribution" (link). So Nokia as the dominant shipper of Symbian devices gets the most seats, and can then control the election of additional board members. Symbian contacted me on June 26 with a correction: "Five Foundation board seats will be allocated to handset vendors on the basis of volumes shipped using the Symbian Foundation platform. There will be a maximum of one (1) board seat per company." So Nokia gets one board seat, and does not control the foundation.
The right phrase for this, I think, is puppet strings. But I don't mean that in a bad way; it would have been insane for Nokia to actually give up control over its smartphone OS. Just don't have any illusion that the strings have been cut. They've merely been relocated, and in fact I think Nokia now controls things more directly since it owns the Symbian development team. Added June 26: Nokia has given other companies a formal say in the feature set, with less official control by Nokia than it had when it held about 50% of Symbian, but perhaps more practical influence because it now directly employs most of the people doing the engineering. So I think Nokia gave up the official veto it had over Symbian's actions, and replaced it with a practical one.
What does it all mean?
I don't know.
The announcement is so complex, and so many things are changing in the mobile market, that it's very difficult to predict how everything will turn out. Also, the whole thing depends on crisp implementation. Even the most brilliant strategy fails if you can't execute on it.
You can't say that Nokia lacks guts. The foundation members said at the announcement that it is one of the largest open source announcements ever, and I think that's true. It's a very interesting, aggressive move for Nokia, and I respect that. There are precedents for a big company acting as a sugar daddy for an open source software project, but I don't think it's ever been done with a project that is as central to the parent company's operations as Symbian is to Nokia. It will be fascinating to see if Nokia can really work effectively through the foundation model. I presume they have thought about this a lot and feel the risks are well controlled.
I'm having trouble seeing the big picture of how this changes the world, though. I suspect the announcement is actually half cleanup and half power move. The power move is that it challenges Android, and could help harness the energy of the open source community to support Symbian. The cleanup is that the ownership situation of Symbian was unstable and had to be changed eventually, and SonyEricsson clearly wanted to get out of the UIQ business. The creation of the foundation solves all of those problems at once. My guess is that since Nokia is paying most of the bills, the other foundation partners were willing to go along with it. The Symbian investors get some money from Nokia, and can sit back and wait to see what the foundation delivers.
Here are some other issues and questions that stand out to me:
Symbian gets its UI back. Years ago, Symbian took itself out of the user interface business, allowing Nokia and NTT DoCOMo to develop their own UIs, and spinning out the UIQ interface team. The company declared that it had been a mistake to ever go into the UI business. So it was amusing to hear Symbian at today's press conference saying how disruptive it was to have multiple user interfaces, and how great it is to have them unified.
The reality is that OS companies have traditionally created the UI along with the rest of the OS because they need to be coordinated closely, and because developers want to work with one consistent interface. So the real mistake was getting out of the UI business, and Symbian has now corrected that.
What will happen within Nokia? At the press conference, Nokia was asked what happens to its internal S60 development team (which is rumored to be larger than Symbian itself) once the merger is complete. Nokia said vaguely that it's going to spend six months working out all those integration issues, and what it will do with the multiple geographic locations. It's hard for me to believe that working out process won't result in some layoffs. I hope I'm wrong; I have friends at both Nokia and Symbian, and layoffs would be incredibly painful for the Symbian folks, many of whom have spent most of their careers there.
The fate of the people is just one of the open questions about what the merger means to Nokia. Another is the fate of Trolltech, the development tool that Nokia purchased recently and said would unify app development across Series 40 and S60. Will it be contributed to Symbian? And what does the open sourcing of Symbian mean for Nokia's use of Linux?
How does Nokia differentiate its software? The theory behind S60 was that Nokia would have its own user interface, helping to differentiate its phones from other Symbian vendors. Now that S60 will be given away, how will Nokia differentiate? The Symbian Foundation says licensees will be able to create a "differentiated experience" on its unified UI framework. Lord only knows what that means. Maybe Nokia has decided the UI is not a point of differentiation at all, and plans to focus on something else (web services, perhaps?)
Will the change in Symbian really drive more developers? As the Symbian partners pointed out repeatedly in the press conference, they have already sold 200 million phones. If that's not enough to excite developers, how will adding another 200 million -- or even 500 million -- do it? Although Symbian now has a nicer long term story, I don't think most developers were paying attention to that. They respond to user excitement and the chance to make lots of money. The new Symbian strategy doesn't directly drive either one.
What does it mean to Apple? I think it's probably good news. Although the Symbian partners could theoretically bleed Apple by sharing investments that Apple has to fund for itself, Apple competes on speed and elegance, not cost control. Nokia and Symbian will now spend the next six months sorting out how they'll integrate and rationalize their organizations. No matter how much they try to avoid it, this will slip schedules and force people to revisit plans. And the other Symbian licensees have to wait two years for the new OS. That gives Apple a long, long time to build up its iPhone business. The Register put it very bluntly in its commentary on the Symbian announcement (link):
"Apple must now see a clear road ahead for world dominance...it's now Apple's business to lose."
Wow, from new entrant to industry leader in just a year. That sort of stuff must drive Nokia nuts.
Is Google happy or upset tonight? My first reaction is to say that Google should be worried because there's now another very credible operating system being given away for free in competition with Android (or there will be in two years). What's more, the leading mobile handset companies all participated in the Symbian Foundation announcement. That makes it harder for Android to get licensees. But the new open Symbian OS is two years away from shipment, giving Google lots of runway to get established (that's what I meant about execution determining the real impact of the announcement). Also, the governance system for Android is a lot simpler than Symbian's. While the Symbian committees must debate and agree on product plans, Google can just decide whatever features it wants to add, and toss them out there. In theory, Google should be able to move much faster.
Besides, there is the question of why Google really created Android. One school of thought says that Android was just a tool to bleed Microsoft and force openness in the mobile ecosystem. If that's the goal, then the opening up of Symbian is a kind of a triumph for Google. Nokia is, in many ways, doing Google's work for it. Which brings us to...
What happens to Microsoft? Here's the weird thought for the day: Microsoft is the last major company charging money for a mobile operating system. The throwback. The dinosaur. How many companies are going to want to pay for Windows Mobile when they can get Linux, Android, or Symbian for free? This is Microsoft's ultimate open source nightmare, becoming real.
posted @
2008-07-01 09:27 Wang Wei 阅读(80) |
评论 (0) |
编辑
【转自eetchina】
全球第一大手机供应商在6月25日星期二宣布,它计划收购Symbian公司的其它产品,这家公司占有全球
智能手机市场的2/3江山,收购消息在新闻媒体中引发了一阵赞许之风,大多数人对诺基亚的“大胆”举措表示赞扬。
最流行的一种分析观点认为,诺基亚是赢家而谷歌是输家。这一交易也被视为开源运动的胜利,由于诺基亚认可了一种由其竞争对手追逐的一种商业模式,如谷歌的Android平台以及LiMo基金会(Linex Mobile)。
然而,通过与诺基亚以及Symbian的高级管理人员会谈,展示的远远不止在通向Symbian基金会这条“开阔”大道上即将面临的几个障碍。
下面就是你需要知道的7件事情,以便了解诺基亚-Symbian的幕后交易以及它对行业的意义。
1. 这将是一个漫长的过程吗?
不要让自己感到时间紧迫。诺基亚在把所有相关的所有权以及资产注入Symbian基金会之前要花上几年时间,然后,才能以Eclipse公共许可模式供货。
诺基亚公司负责S60软件的高级副总裁Lee Williams在接受EE Times的采访时解释说,要实施三个阶段的计划。
在第一阶段,诺基亚将向Symbian基金会——一家新的非营利性的组织——捐献承载Symbian操作系统的S60的核心代码、诺基亚的用户界面、中间件以及为基于Symbian的智能手机平台的一切配套件。其目标就是让手机供应商能够在免版税许可的计划下完成它们的产品开发。
然而,在2009年第一季度之前,各个基金会成员不会停止向Symbian以及诺基亚支付版税。那些付款覆盖了使用Symbian公司的操作系统以及诺基亚公司的S60用户界面(而产生的费用)。尽管诺基亚不会透露其对S60的收费,但是,移动制造商每部手机目前向Symbian公司支付高达5美元的版税。
在第二阶段,各个成员将把来自面向移动的应用平台(MOAP)的一些资产加入并集成,从而作为对Symbian基金会的产品的补充;MOAP是一种基于Symbian OS的软件平台,被NTT DoCoMo公司用作它的移动手机和UIQ的平台。据Williams透露,这一过程可能要花长达两年时间。
第三阶段预计在2011年开始,基金会提供的产品将最终在开放源社群的帮助下开始演变。在Eclipse公共许可(EPL)规定之下,发展成果将向社群发布。
较之于其它的开发员许可模式,诺基亚公司认为,EPL——常常被称为业务友好的免费软件许可——将产生一定的差异。Williams表示,EPL能够“为核心源代码提供合适的保护”,从而允许开发商完成“派生工作”,与此同时,赋予各种许可“实现差异化的强大能力。”
2. 一个目标浏览器—对于Opera没有空间
尽管所有的人均谈论开放源的发展以及在平台上添加或实现差异化,但是,Symbian基金会所提供的产品可能只是以一个面向智能电话的目标浏览器而告终。
Symbian公司的战略副总裁John Forsyth说道:“一个目标浏览器覆盖全球大多数的电话是一件好事情。”他指出,在基金会的下一阶段,使得标准浏览器成为平台的组成部分将是“关键”。它将有助于“削减巨大的成本,并且,对于应用开发商来说是一件有益的事情,”他解释说。
目前,诺基亚的网站浏览器被构建在S60 Webkit之上,它是面向S60平台的开放源WebKit项目的一个端口。WebKit包含苹果公司用于其Safari浏览器的内核以及各个组件。
这是否意味着对于诸如Opera这样的浏览器没有发展空间?
Forsyth强调了开放源WebKit的强项,与此同时,推测Opera可能正在寻求其它的嵌入式设备来推广应用它的浏览器。
3. 一切都是为了“简化软件供应链”
现在的移动应用软件和服务开发面临的最大问题就是平台的“碎片化”。有太多的实现路线,专家们说道。“我们需要简化软件供应链并把更多的价值扩展至我们自己的产品,”诺基亚的Williams说道。
Symbian的Forsyth赞同地说:“每一个OEM均问的一个问题就是:我要如何改变商品工程与我们的产品的差异化之间的比率?”
希望就在于Symbian基金会将掌管“商品工程”。通过摒弃现有的版税许可模式,诺基亚希望消除“进入一个生态系统所存在的延迟时间,”Williams解释说。
4. Facebook会进入移动手机吗?
在理想情况下,在由Symbian基金会推广的开放源模式中实现诸如Facebook这样的流行应用易如反掌—至少在理论上如此。
与其每一家手机供应商单独与Facebook、雅虎或谷歌谈判,不如基金会的11家创始人成员公司采取集体行动。除了诺基亚之外,其它成员包括三星电子、摩托罗拉、LG、索尼-爱立信、ST微电子、德州仪器、AT&T、NTT DoCoMo以及Vodafone。
更为重要的是,一旦一项资产如Facebook变为对基金会可用,平台集成将跟进以便由所有的成员公司使用。尽管诺基亚公司的Williams指出,Facebook的例子是假设,他补充说,“那应该非常有趣。”
5. 半导体公司的力量
随着大多数公司急切地加入几乎任何移动手机联盟,在创始人公司中看到像德州仪器以及ST微电子这样的名字就不会让人惊讶。
的确,观察家把最近诺基亚-Symbian交易吹捧为一个巨大的胜利,为什么?
Symbian公司的Forsyth解释说,在芯片解决方案以及操作系统平台之间所必需的软件集成是“真正地艰难。”他补充说,“它对上市时间有着最大的影响。”它的顺利完成可能要花上几个月的开发时间。
据MultiMedia Intelligence的共同创始人兼首席研究官Frank Dickson说:“主要的芯片供应商均欲支持每一种主要的操作系统,因为它们承担不起被从事新手机设计的重要组织排除在外。”显然,操作系统供应商需要半导体公司的支持。
然而,他补充说:“芯片供应商不会定义成功,芯片公司将定义让各种方案有效地被实现的协议和标准。”
6. 为什么这个开放源移动平台比其它的要更好?
诺基亚公司的Williams坚持认为,Symbian基金会将是一家提供EPL许可模式的真正的开放式基金会。最为重要的是基金会构建在现有的框架之上,并且被设置为利用一系列的资产。
Dickson表示赞同。基金会以手机供应商的DNA为根基。这将是最巨大的力量,他说道,“手机供应商为了确保它们控制它们自己的命运而受到高度的推动,因此,在Symbian基金会的成功中拥有既得利益。”
然而,实际上战斗尚未开始。
Dickson警告说,“Android有谷歌的支持,它寄希望于在手机上利用互联网提供服务的力量。微软和苹果公司拥有强大的生态系统,并且略知操作系统研究的工作。Linux拥有快速发展的社群。”
因此,战斗远远没有结束。
7. 底线是什么?
Symbian基金会是对手机业务的巨大发展。Dickson表示,“长远意义大于眼前意义。”他认为,这项交易是“手机复制个人电脑的商业模式这一运动”的象征。
这可能并不是所有的利益相关者均希望听到的消息,但是,真相在于差异化将不及专利权的实现。“手机将成为运行标准操作系统的标准平台,”分析师表示,“差异化将出现在形状因子以及运行该操作系统的各种应用上。”
posted @
2008-06-30 10:12 Wang Wei 阅读(24) |
评论 (0) |
编辑
诺基亚4.1亿美元收购Symbian 旨在对抗Google
北京时间6月24日消息,据国外媒体报道,诺基亚日前宣布,将出资约4.1亿美元收购其他股东持有的(Symbian)公司52%股份。诺基亚计划免除Symbian操作系统的专利权使用费,应对来自Google的挑战。
交易于年底完成
诺基亚表示,作为Symbian公司的其他股东,索爱、爱立信、松下和西门子已经接受了诺基亚的收购报价,而三星电子预计也将接受这一报价。
Handelsbanken分析师Karri Rinta表示:“令人最吃惊的是诺基亚马上就将完全拥有Symbian,并且是以一个非常好的价格。这一举措是合理的。不过诺基亚在收购时面临压力,尤其考虑到松下和西门子也是Symbian的股东。”
诺基亚表示,这一交易预计将于年底完成,并将于2009年计入业绩中。
收购有助降价
目前全球2/3的智能手机都采用Symbian操作系统,占全球手机总量的6%。不过,Google的Android和iPhone将对Symbian的统治地位造成冲击。
英国研究机构CCS Insight的Geoff Blaber表示:“其他手机软件提供商已经对诺基亚造成威胁,这一举措是诺基亚的回应。”他认为的其他提供商包括开源组织LiMo基金会、Google及苹果。
目前与Symbian市占率最接近的是微软Windows Mobile系统。Gartner分析师Carolina Milanesi表示:“这对微软也造成巨大压力,微软正希望进军消费者市场。”“运营商和营销人员需要通过较低的价格来推广智能手机,放弃专利权使用费将有助于降价。对运营商来说,这提供了比Android更好的选择。”
诺基亚目前在全球手机市场的占有率达到40%。诺基亚每年需要向Symbian公司支付2.64亿欧元专利权使用费,诺基亚此前仅拥有Symbian公司48%的股份。
将建Symbian基金会
诺基亚此前还宣布,将与AT&T、NTT DoCoMo、沃达丰,以及芯片生产商德州仪器、意法半导体等共建Symbian基金会,以进一步开发手机软件。
诺基亚将向该基金会提供Symbian系统及S60软件资产,其他公司则将提供SymbianUIQ系统和MOAP系统的软件,该基金会的目的是到2009年时建立统一的新Symbian平台。
诺基亚设备业务主管Kai Oistamo表示,该基金会使参与者加快创新速度,使该平台被更广泛的接受。此外,有关厂商还能够更快的推出新产品北京时间6月24日消息,据国外媒体报道,诺基亚日前宣布,将出资约4.1亿美元收购其他股东持有的(Symbian)公司52%股份。诺基亚计划免除Symbian操作系统的专利权使用费,应对来自Google的挑战。
交易于年底完成
诺基亚表示,作为Symbian公司的其他股东,索爱、爱立信、松下和西门子已经接受了诺基亚的收购报价,而三星电子预计也将接受这一报价。
Handelsbanken分析师Karri Rinta表示:“令人最吃惊的是诺基亚马上就将完全拥有Symbian,并且是以一个非常好的价格。这一举措是合理的。不过诺基亚在收购时面临压力,尤其考虑到松下和西门子也是Symbian的股东。”
诺基亚表示,这一交易预计将于年底完成,并将于2009年计入业绩中。
收购有助降价
目前全球2/3的智能手机都采用Symbian操作系统,占全球手机总量的6%。不过,Google的Android和iPhone将对Symbian的统治地位造成冲击。
英国研究机构CCS Insight的Geoff Blaber表示:“其他手机软件提供商已经对诺基亚造成威胁,这一举措是诺基亚的回应。”他认为的其他提供商包括开源组织LiMo基金会、Google及苹果。
目前与Symbian市占率最接近的是微软Windows Mobile系统。Gartner分析师Carolina Milanesi表示:“这对微软也造成巨大压力,微软正希望进军消费者市场。”“运营商和营销人员需要通过较低的价格来推广智能手机,放弃专利权使用费将有助于降价。对运营商来说,这提供了比Android更好的选择。”
诺基亚目前在全球手机市场的占有率达到40%。诺基亚每年需要向Symbian公司支付2.64亿欧元专利权使用费,诺基亚此前仅拥有Symbian公司48%的股份。
将建Symbian基金会
诺基亚此前还宣布,将与AT&T、NTT DoCoMo、沃达丰,以及芯片生产商德州仪器、意法半导体等共建Symbian基金会,以进一步开发手机软件。
诺基亚将向该基金会提供Symbian系统及S60软件资产,其他公司则将提供SymbianUIQ系统和MOAP系统的软件,该基金会的目的是到2009年时建立统一的新Symbian平台。
诺基亚设备业务主管Kai Oistamo表示,该基金会使参与者加快创新速度,使该平台被更广泛的接受。此外,有关厂商还能够更快的推出新产品北京时间6月24日消息,据国外媒体报道,诺基亚日前宣布,将出资约4.1亿美元收购其他股东持有的(Symbian)公司52%股份。诺基亚计划免除Symbian操作系统的专利权使用费,应对来自Google的挑战。
交易于年底完成
诺基亚表示,作为Symbian公司的其他股东,索爱、爱立信、松下和西门子已经接受了诺基亚的收购报价,而三星电子预计也将接受这一报价。
Handelsbanken分析师Karri Rinta表示:“令人最吃惊的是诺基亚马上就将完全拥有Symbian,并且是以一个非常好的价格。这一举措是合理的。不过诺基亚在收购时面临压力,尤其考虑到松下和西门子也是Symbian的股东。”
诺基亚表示,这一交易预计将于年底完成,并将于2009年计入业绩中。
收购有助降价
目前全球2/3的智能手机都采用Symbian操作系统,占全球手机总量的6%。不过,Google的Android和iPhone将对Symbian的统治地位造成冲击。
英国研究机构CCS Insight的Geoff Blaber表示:“其他手机软件提供商已经对诺基亚造成威胁,这一举措是诺基亚的回应。”他认为的其他提供商包括开源组织LiMo基金会、Google及苹果。
目前与Symbian市占率最接近的是微软Windows Mobile系统。Gartner分析师Carolina Milanesi表示:“这对微软也造成巨大压力,微软正希望进军消费者市场。”“运营商和营销人员需要通过较低的价格来推广智能手机,放弃专利权使用费将有助于降价。对运营商来说,这提供了比Android更好的选择。”
诺基亚目前在全球手机市场的占有率达到40%。诺基亚每年需要向Symbian公司支付2.64亿欧元专利权使用费,诺基亚此前仅拥有Symbian公司48%的股份。
将建Symbian基金会
诺基亚此前还宣布,将与AT&T、NTT DoCoMo、沃达丰,以及芯片生产商德州仪器、意法半导体等共建Symbian基金会,以进一步开发手机软件。
诺基亚将向该基金会提供Symbian系统及S60软件资产,其他公司则将提供SymbianUIQ系统和MOAP系统的软件,该基金会的目的是到2009年时建立统一的新Symbian平台。
诺基亚设备业务主管Kai Oistamo表示,该基金会使参与者加快创新速度,使该平台被更广泛的接受。此外,有关厂商还能够更快的推出新产品 【转载】
posted @
2008-06-30 10:08 Wang Wei 阅读(18) |
评论 (0) |
编辑
首先感谢帖子的原作者。转自
http://www.ustcers.com/blogs/devzhao/pages/13027.aspx
Windows CE 桌面UI修改
桌面UI主要涉及到CDesktopView类 ,CDesktopView类继承于CDefShellView类;如果要更改桌面的UI表现形式,只要从这个类入手即可.CDesktopView类位于
$(_WINCEROOT)\PUBLIC\SHELL\OAK\HPC\CESHELL文件夹中.
1.更改右键弹出菜单选项
桌面的弹出菜单有两种:一种是在桌面按右键弹出的FOLDER_VIEW_MENU_OFFSET;另一种是在图标上点右键弹出的ITEM_MENU_OFFSET.两种菜单的完整表现如下:
/******************************************************
//FOLDER_VIEW_MENU_OFFSET菜单
查看 (pos:FOLDER_VIEW_MENU_OFFSET)
--------------
图标排列方式
刷新
--------------
粘贴
粘贴快捷方式
--------------
新建文件夹
--------------
属性
*******************************************************/
/******************************************************
//ITEM_MENU_OFFSET菜单
打开 (pos:ITEM_MENU_OFFSET)
----------
剪切
复制
----------
删除
重命名
----------
属性
*******************************************************/
在弹出菜单之前,都需要调用CDesktopView::HandleInitMenuPopup()函数对菜单进行构建;所以,要更改菜单的选项,也是在此函数中进行.
删除菜单子项可以通过::RemoveMenu()函数进行删除,有以位置(MF_BYPOSITION)或命令方式(MF_BYCOMMAND).
例如:
1.删除"复制"子菜单:
::RemoveMenu(hmenu, IDC_EDIT_COPY, MF_BYCOMMAND);
2.删除ITEM_MENU_OFFSET菜单的第二个子菜单:
::RemoveMenu(hmenu, ITEM_MENU_OFFSET+1, MF_BYPOSITION); //其后的菜单子项位置会上移
以下这段代码FOLDER_VIEW_MENU_OFFSET只保留了"刷新","属性";ITEM_MENU_OFFSET只保留了"打开","属性"(夹杂在begin和end间是笔者加的代码)
LRESULT CDesktopView::HandleInitMenuPopup(HMENU hmenu, PopupMenuInfo * pPopupMenuInfo)
{
LRESULT result = CDefShellView::HandleInitMenuPopup(hmenu, pPopupMenuInfo);
if ((0 == result) && (FWF_DESKTOP & m_fFlags))
{
if (pPopupMenuInfo && (FOLDER_MENU_OFFSET == pPopupMenuInfo->offset))
{
::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET, MF_BYPOSITION); // "View" sub-menu
::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET, MF_BYPOSITION); // "View" separator
::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET, MF_BYPOSITION); //"图标排列方式"
::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET+1, MF_BYPOSITION); //separator
::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET+1, MF_BYPOSITION); //"粘贴"
::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET+1, MF_BYPOSITION); //"粘贴快捷方式"
::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET+1, MF_BYPOSITION); //separator
::RemoveMenu(hmenu, FOLDER_VIEW_MENU_OFFSET+1, MF_BYPOSITION); //"新建文件夹"
}
else if (pPopupMenuInfo && (ITEM_MENU_OFFSET == pPopupMenuInfo->offset))
{
::RemoveMenu(hmenu, IDC_EDIT_CUT, MF_BYCOMMAND);
::RemoveMenu(hmenu, IDC_EDIT_COPY, MF_BYCOMMAND);
::RemoveMenu(hmenu, IDC_FILE_DELETE, MF_BYCOMMAND);
::RemoveMenu(hmenu, IDC_FILE_RENAME, MF_BYCOMMAND);
::RemoveMenu(hmenu, ITEM_MENU_OFFSET+1, MF_BYPOSITION); // separator
::RemoveMenu(hmenu, ITEM_MENU_OFFSET+1, MF_BYPOSITION); // separator
}
}
- return result;
}
那么增加菜单项如何实现呢,呵呵。。。^_^
2.禁止拖拽桌面图标
CDesktopView的拖拽处理是直接采用基类CDefShellView的DoDragDrop()函数.如果要禁止桌面图标拖拽,只要重载DoDragDrop()函数为空即可.
在desktopview.h重载,代码如下:
protect:
virtual void DoDragDrop(NMLISTVIEW * pnmListView){};
3.桌面图标排列顺序
桌面图标排列顺序有按名称,类型,日期,大小以及还有一个自动排列;默认的是按名称排列.
在CDesktopView中处理命令的是HandleCommand()函数,其实际是调用CDefShellView的HandleCommand()函数.为方便使用,我们可以以此方式调用:CDefShellView::HandleCommand(dwCmd);
其中,dwCmd是命令类型,有如下宏定义命令:
IDC_EDIT_COPY :复制
IDC_EDIT_CUT :剪切
IDC_EDIT_PASTE :粘贴
IDC_EDIT_PASTESHORTCUT :粘贴快捷方式
IDC_EDIT_SELECTALL :全选
IDC_EDIT_UNDO :撤销
IDC_FILE_DELETE :删除
IDC_FILE_NEWFOLDER :新建文件夹
IDC_FILE_OPEN :打开
IDC_FILE_PROPERTIES :属性
IDC_FILE_RENAME :重命名
IDC_FILE_SENDTO_DESKTOP :发送到桌面
IDC_FILE_SENDTO_MYDOCUMENTS :发送到我的文档
IDC_HELP_TOPICS :(无作用)
IDC_REFRESH :刷新
IDC_ARRANGE_AUTO :自动排列
IDC_ARRANGE_BYDATE :按日期排列
IDC_ARRANGE_BYNAME :按名称排列
IDC_ARRANGE_BYSIZE :按大小排列
IDC_ARRANGE_BYTYPE :按类型排列
IDC_VIEW_DETAILS :详细信息查看
IDC_VIEW_LIST :列表方式查看
IDC_VIEW_ICONS :图标方式查看
IDC_VIEW_OPTIONS :查看选项(?)
IDC_VIEW_TYPE :查看类型(?)
IDC_GO_MYDOCUMENTS :转到到我的文档
IDC_GO_FOLDERUP :转到上级文件夹
ID_ESCAPE :ESC
ID_CONTEXTMENU :内容菜单(?)
如果需要图标以日期方式初始化排列,只要在CDesktopView::CreateViewWindow()函数最后添加此语句即可:
CDefShellView::HandleCommand(IDC_ARRANGE_BYDATE);
4.更改桌面背景
在CDesktopView::PaintBackground中修改。
修改背景颜色:
// --- Original code commented out ---
// ::FillRect(hdc, &rc, ::GetSysColorBrush(COLOR_BACKGROUND));
// Explicitly set the background color.
::FillRect(hdc, &rc, ::GetSysColorBrush(RGB(230, 150, 230)));
修改显示的os版本信息(类似“windows ce.net 4.2") /* -- Original code commented out --
::wsprintf(wszVersion, L"Microsoft Windows \
CE v%d.%02d (Build %d on %s) ", VerInfo.dwMajorVersion,
VerInfo.dwMinorVersion, VerInfo.dwBuildNumber,
TEXT(__DATE__));
*/
// Display shell name along with Windows CE version information.
::wsprintf(wszVersion, L"<Shell Name> for Microsoft Windows \
CE v%d.%02d (Build %d on %s) ",
VerInfo.dwMajorVersion, VerInfo.dwMinorVersion,
VerInfo.dwBuildNumber, TEXT(__DATE__));
5.。。。。待续
posted @
2008-06-28 11:40 Wang Wei 阅读(124) |
评论 (2) |
编辑
挺有用的帖子,对原作者表示感谢。
http://blog.csdn.net/norains/archive/2006/04/25/677244.aspx
//=====================================================================================================
//AUTHOR:
// norains
//DATE:
// Tuesday 25-April -2006
//=====================================================================================================
1.让桌面不显示"我的电脑","回收站"
删除以下键值:
[HKEY_LOCAL_MACHINE\Explorer\Desktop]
{000214A0-0000-0000-C000-000000000046} ;"My Computer"
{000214A1-0000-0000-C000-000000000046} ;Recycle Bin"
存在这两个键值的文件有:
$(_WINCEROOT)\PUBLIC\SHELL\OAK\FILES\shell.reg
$(_WINCEROOT)\PUBLIC\WCESHELLFE\OAK\FILES\wceshellfe.reg
$(_WINCEROOT)\PUBLIC\WCESHELLFE\OAK\FILES\wceshellfe88.reg
2.直接删除文件,不放回回收站
[HKEY_LOCAL_MACHINE\Explorer]
"UseRecycleBin"=dword:0 ;设置0为直接删除;设置1为放入回收站
3.修改XP皮肤的系统界面颜色
如果选择了XP SKIN,则在控制面板的"显示"选项中是无法更改一些窗口的颜色的.不过,我们倒是可以通过更改$(_WINCEROOT)\PUBLIC\COMMON\OAK\FILES\common.reg文件中的XP颜色参数来达到更改窗口颜色的目的.
原XP样式的颜色参数如下:
[HKEY_LOCAL_MACHINE\SYSTEM\GWE]
"SysColor"=hex:\
00,00,00,00,\
3A,6E,A5,00,\
00,00,00,00,\
00,00,00,00,\
EF,EB,DE,00,\
FF,FF,FF,00,\
00,00,00,00,\
00,00,00,00,\
00,00,00,00,\
FF,FF,FF,00,\
C0,C0,C0,00,\
C0,C0,C0,00,\
80,80,80,00,\
31,69,C6,00,\
FF,FF,FF,00,\
EF,EB,DE,00,\
AD,AA,9C,00,\
80,80,80,00,\
00,00,00,00,\
00,00,00,00,\
FF,FF,FF,00,\
73,6D,63,00,\
FF,FF,FF,00,\
00,00,00,00,\
FF,FF,E1,00,\
EF,EB,DE,00,\
00,00,00,00
代表的意思是:
0 COLOR_SCROLLBAR Color of the gray area of a scroll bar.
1 COLOR_BACKGROUND Background color of the desktop window.
2 COLOR_ACTIVECAPTION Color of the title bar of an active window.
3 COLOR_INACTIVECAPTION Color of the title bar of an inactive window.
4 COLOR_MENU Background color of a menu.
5 COLOR_WINDOW Background color of a window.
6 COLOR_WINDOWFRAME Color of a window frame.
7 COLOR_MENUTEXT Color of the text in a menu.
8 COLOR_WINDOWTEXT Color of the text in a window.
9 COLOR_CAPTIONTEXT Color of the text in a title bar and of the size box and scroll bar arrow box.
10 COLOR_ACTIVEBORDER Color of the border of an active window.
11 COLOR_INACTIVEBORDER Color of the border of an inactive window.
12 COLOR_APPWORKSPACE Background color of multiple document interface (MDI) applications.
13 COLOR_HIGHLIGHT Color of an item selected in a control.
14 COLOR_HIGHLIGHTTEXT Color of the text of an item selected in a control.
15 COLOR_BTNFACE Color of the face of a button.
16 COLOR_BTNSHADOW Shadow color of buttons for edges that face away from the light source.
17 COLOR_GRAYTEXT Color of shaded text. This color is set to 0 if the current display driver does not support a solid gray color.
18 COLOR_BTNTEXT Color of the text for push buttons.
19 COLOR_INACTIVECAPTIONTEXT Color of the text in the title bar of an inactive window.
20 COLOR_BTNHIGHLIGHT Highlight color of buttons for edges that face the light source.
21 COLOR_3DDKSHADOW Color of the dark shadow for three-dimensional display elements.
22 COLOR_3DLIGHT Highlight color of three-dimensional display elements for edges that face the light source.
23 COLOR_INFOTEXT Color of the text for ToolTip controls.
24 COLOR_INFOBK Background color for ToolTip controls.
25 COLOR_STATIC Background color for static controls and dialog boxes. Supported in Windows CE 2.0 and later.
26 COLOR_STATICTEXT Color of the text for static controls. Supported in Windows CE 2.0 and later.
27 COLOR_GRADIENTACTIVECAPTION Color of the title bar of an active window that is filled with a color gradient.
28 COLOR_GRADIENTINACTIVECAPTION
4.文件夹映射更改
假设我们要将"桌面"文件夹从根目录(在这里指的是RAM空间)移动到某个外部储存器"HardDisk"中,可以按如下步骤:
1.将$(_WINCEROOT)\PUBLIC\COMMON\OAK\FILES\INTLTRNS\0804\common.str文件中的LOC_PATH_DESKTOP宏定义改为"file://harddisk//Windows//桌面"
2.然后将所有.dat文件中关于LOC_DESKTOP_DIR的选项,全部在windows前添加"\HardDisk",
如:Directory("\Windows\LOC_DESKTOP_DIR"):-File("LOC_INTERNETEXPLORER_LNK", "\Windows\iesample.lnk")
改为:Directory("\HardDisk\Windows\LOC_DESKTOP_DIR"):-File("LOC_INTERNETEXPLORER_LNK", "\Windows\iesample.lnk")即可.
如果有创建文件夹的话,也要改:
如:root:-Directory("\LOC_PROGRAMFILES_DIR")
改为:root:-Directory("HardDisk\LOC_PROGRAMFILES_DIR")
posted @
2008-06-28 11:37 Wang Wei 阅读(84) |
评论 (0) |
编辑
环境:
Wince5.0+ARM926
目的:
按照自己的风格建立Shell
背景:
考虑到产品外观及风格的一致性,无法直接把Explorer作为Shell,而且,又无简单的把Explorer直接放到后台(会出现一些问题,譬如启动的瞬间,Explorer会显示一下)
方法:
1. 直接修改Explorer,改为自己的风格。个人认为这是最根本最有效的方法,但是工作量比较大,考虑到时间只能放弃。
2. 直接用自己的Shell替代Explorer。在Shell.reg中有一句
[HKEY_LOCAL_MACHINE\init]
"Launch50"="explorer.exe"
"Depend50"=hex:14,00, 1e,00
就是这一句在启动的最后把Explorer启动起来。(Launchxx的含义及用法在PB的帮助里面有解释)。
把explorer.exe替换自己的shell即可(譬如MyShell.exe),以前一直使用这种方法。
但这种方法有缺陷:wince的Common Dialog是依赖于Explorer的,这就导致很多Wince自带的程序执行时有问题,譬如WordPad无法打开和保存。。。(如果哪位知道如何在不启动Explorer的情况下使用Common Dialog的话,还烦请告诉小弟)
3. 现在是对Explorer稍作修改确保显示没有问题,然后放在后台,步骤如下:
3.1. 按照PB Help的提示修改Explorer(如果通过修改注册表实现,则尽量不修改Explorer代码)
a. 复制WINCE500\PUBLIC\SHELL\OAK\HPC,到WINCE500\PUBLIC\SHELL\OAK目录下,并重命名为MyShell
b. 修改dir文件
c. 去掉桌面上显示的"Microsoft Windows CE...........":
直接把desktopview.cpp中#ifndef SHIP_BUILD改为#if 0即可。
(理论上在Platform Setting里面可以设置此段文字不显示的,但是不知为何不起作用)
d. 修改Taskbar自动隐藏时的高度:
taskbar.hxx中,把TASKBAR_HEIGHT_AUTOHIDE改为0
e. 去掉Explorer启动时的音乐:
把WinMain中的sndPlaySound(c_szSystemStart, SND_ALIAS|SND_ASYNC|SND_NODEFAULT);注释掉。
(注册表中,没有找到开机音乐的键值。如果哪位知道,请不吝赐教)
3.2. 修改注册表
a. Shell.reg: 桌面上去掉"My Device"和"Recycle Bin"两个图标
找到
[HKEY_LOCAL_MACHINE\Explorer\Desktop]
"{000214A0-0000-0000-C000-000000000046}"="My Device"
"{000214A1-0000-0000-C000-000000000046}"="Recycle Bin"
改为
[HKEY_LOCAL_MACHINE\Explorer\Desktop]
;"{000214A0-0000-0000-C000-000000000046}"="My Device"
;"{000214A1-0000-0000-C000-000000000046}"="Recycle Bin"
b. 去掉桌面上的其它快捷方式
wince用Directory("\Windows\LOC_DESKTOP_DIR"):-File("LOC_MSPWORD_LNK","\Windows\wordpad.lnk")的方式在桌面上建立快捷方式
把WINCE500\PUBLIC\WCEAPPSFE\OAK\FILES\wceappsfe.dat中的所有Directory("\Windows\LOC_DESKTOP_DIR"):-File(...)全部注释掉。
把WINCE500\PUBLIC\WCESHELLFE\OAK\FILES\wceshellfe.dat中的所有Directory("\Windows\LOC_DESKTOP_DIR"):-File(...)全部注释掉。
c. 设置Taskbar为自动隐藏
在注册表中添加
; -- 使任务栏缺省自动隐藏
[HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\AutoHide]
@="1"
; -- 使任务栏缺省不总在最前
[HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\OnTop]
""=dword:0
d. 修改桌面背景颜色
[HKEY_LOCAL_MACHINE\SYSTEM\GWE]
"SysColor"=hex:\
00,00,00,00,\
00,00,00,00,\ //Desktop窗口背景颜色,现在设置为黑色
00,00,00,00,\
00,00,00,00,\
EF,EB,DE,00,\
FF,FF,FF,00,\
00,00,00,00,\
00,00,00,00,\
00,00,00,00,\
FF,FF,FF,00,\
C0,C0,C0,00,\
C0,C0,C0,00,\
80,80,80,00,\
31,69,C6,00,\
FF,FF,FF,00,\
EF,EB,DE,00,\
AD,AA,9C,00,\
80,80,80,00,\
00,00,00,00,\
00,00,00,00,\
FF,FF,FF,00,\
73,6D,63,00,\
FF,FF,FF,00,\
00,00,00,00,\
FF,FF,E1,00,\
EF,EB,DE,00,\
00,00,00,00
e. 背景图片
[HKEY_CURRENT_USER\ControlPanel\Desktop]
"wallpaper"="\\NandDisk\\Startup\\wallpaper.bmp"
f. 启动自己的Shell
[HKEY_LOCAL_MACHINE\init]
"Launch70"="\\Windows\\ShellLoader.exe"
"Depend70"=hex:14,00, 1e,00
效果:系统启动后,先启动explorer显示wallpaper.bmp,然后启动ShellLoader.exe
posted @
2008-06-28 11:27 Wang Wei 阅读(111) |
评论 (0) |
编辑