[翻译]-Windows CE 程序设计 (3rd 版)--5.2 公共控件(十)

翻译 2006年06月25日 14:11:00

                      菜单条                                        翻译:tellmenow

菜单条控件是在Pocket PC 2000中开始引入的。从外观上看,菜单条同命令条的不同之处在于它是位于窗口底部而不是顶部。但是,对程序员来说,菜单条有许多不同的编程接口。因为Pocket PC的流行以及OEM厂商希望能够创建同Pocket PC软件兼容的嵌入式系统,所以从Windows CE.NET 4.2开始,现在菜单条同Windows CE的嵌入式版本一起发布。

菜单条是一个精巧复杂的控件,这使得它不适合手工编程。菜单条控件的设计者似乎也有意通过代码向导和资源编辑器来完成菜单条控件的大部分编码和资源产生。虽然这是大部分Windows程序员编码的方式,但了解菜单条控件实际上是如何工作的依然是很重要的,尤其是当工具不能完全符合工作需要的时候。出于这个原因,在本节,我将在基本的API级别上描述菜单条。因此,我可以准确的描述出希望的控件外观,特别是用资源的方式来描述。对书中后面的例子,当我在例子中使用菜单条时,我将用代码向导来产生菜单条上的菜单。

在一头钻进去编写菜单条之前,我想简单讲一下如何设计控件。在许多方面,菜单条都和Windows CE系统中使用的其它命令条控件不同。首先,菜单条上的菜单不是作为一个整体来管理的。相反,虽然菜单被定义成一个单一资源,但是菜单条将菜单作为一系列独立的子菜单来管理。

当菜单条上对应的按钮被点中时,每个子菜单都被当作一个弹出菜单显示在适当的位置上。所以,从这个意义上讲,同命令条相比,菜单条更像是一个工具条。

用户很少能看到菜单条和命令条之间的差别,因为菜单按钮是按期望的方式,彼此相邻的摆放在菜单条的最左边的。然而,对于程序员来说,理解差异的重点在于理解如何管理和操纵菜单条。

和命令条的另一个不同点在于,菜单条并不是创建它的窗口的子窗口。菜单条控件实际上是系统创建的一个弹出窗口,并放在屏幕底部而已。创建菜单的窗口可以通过覆盖菜单条来将其隐藏起来。菜单条的部分可以被绘制到它的拥有者的上层。为了避免这种情况,应用程序必须调整窗口尺寸来为桌面上菜单条留出空间。应用程序同菜单条之间的这种纠缠,就是为什么使用菜单条控件的应用程序要手工调整其主窗口的原因。

图5-5展示了Pocket PC上的菜单条,图5-6显示了在嵌入式系统中运行同样的应用程序时的界面。将要讨论的两个菜单条外观上微小差异还是存在的。
图5-5(略):Pocket PC设备上的菜单条。
图5-5(略):嵌入式系统上的菜单条。

Pocket PC上的菜单条在控件最左边包含了软键盘(SIP)按钮。在嵌入式设备上,SIP按钮在任务条上,而不在菜单条上。作为SIP按钮的替代,嵌入式设备上的菜单条有一个[关闭]按钮,同Pocket PC相比,在嵌入式设备屏幕顶部的导航条上有一个轻巧的[最小化]按钮。最后,即使是拥有同样菜单条资源的非常相似的应用程序,在Pocket PC版的菜单条最左边有一个叫[新建]([NEW])的菜单。这是shell的一个扩展,但嵌入式设备并不支持。因为缺乏这个Shell支持,所以即使用来创建菜单条的资源中指定了[新建]菜单,菜单条不能创建[新建]菜单。

菜单条在Pocket PC和嵌入式设备中的另一个不同是菜单条的高度。因为菜单条高度随系统的不同而不同,所以必须编程来判断菜单条的高度。老一些的Pocket PC应用程序,包括本书前几版中的程序,都是假设菜单条是26像素高。既然现在菜单条控件用在各种系统上,那么这个假设就不成立了。一种计算菜单条高度的方式是用菜单条句柄作为参数来调用GetWindowRect函数。下面的代码是在WM_CREATE消息处理函数中,菜单条创建后就计算高度。

RECT rectMB;
GetWindowRect (hwndMenuBar, &rectMB);
nMBHeight = (rectMB.bottom - rectMB.top);

MFC Windows程序设计--公用控件

控件类型 WNDCLASS MFC类 Animation “SysAnimate32” CAnimateCtrl ANIMATE_CLASS ComboBoxEx ...
  • x13262608581
  • x13262608581
  • 2017年04月18日 07:50
  • 422

Windows ce的体系结构和功能

Windows ce体系结构图   操作系统层 操作系统的基本功能被放在多个独立的进程(exe)里面实现。在运行的时候,这些进程大致有如下几个: l         内核NK.EXE l       ...
  • songjinshi
  • songjinshi
  • 2013年06月06日 16:47
  • 2383

定制WINDOWS CE用户界面

作者:太阳下的泪 转自:http://blog.sina.com.cn/s/blog_5be1061c0100bgy8.html MSDN原文参考LINK: http://msdn...
  • whw8007
  • whw8007
  • 2013年05月13日 20:29
  • 593

Win CE 实现web访问快捷方式解决方案

1      Wince实现web访问快捷解决方案 1.1  PDA手持设备参数 1.1.1  MOTO MC3100 购买机器上显示的参数: 系统  Windows CE 6.0 处理器  Marv...
  • boonya
  • boonya
  • 2015年09月09日 13:19
  • 2432

windows CE初次接触(一次升级长安致尚XT高德导航的经历)

以前不知道windows 操作系统在车载导航方面也有应用, 即windows CE . 帮忙升级一个"长安致尚XT"汽车上的windows CE下的 高德导航, 注意到这是百度收购了的,提供免费地...
  • stereohomology
  • stereohomology
  • 2014年10月16日 12:20
  • 20816

基于Windows CE的SPI驱动程序设计

Windows CE为支持多线程、多任务、抢占式的嵌入式操作系统。随着Windows CE 6.0的发布,其内核性能的明显提升和源代码开放,将促使其在消费电子、工业控制、移动通信等领域得到广泛的应...
  • u010192845
  • u010192845
  • 2013年05月11日 08:33
  • 535

在windows程序设计中,主窗口上的控件与对话框上的控件的区别

在windows程序设计中,主窗口上的控件与对话框上的控件的区别主要表现为:主窗口的控件需要调用 CreateWindow函数显示出来,但对话框上的控件是不需要调用CreateWindow来显示的,只...
  • C2S2D2Nshishabi
  • C2S2D2Nshishabi
  • 2015年10月22日 18:17
  • 635

C# windows CE 使用小技巧实例

C# Windows CE使用小技巧实例(2013-08-31 10:03:28) 转载▼ 标签: c wince 使用小技巧实例 it 分类: WINCE ...
  • SnowLotusLi
  • SnowLotusLi
  • 2014年01月23日 20:18
  • 487

Windows CE 必备开发工具总结

开发工具: VS2005或VS2008都可以。两者都包含“智能设备”开发功能。 ActiveSync:这是PC和智能设备通信的工具。可以传送文件同步数据等。 Windows Mobi...
  • lan_tian88
  • lan_tian88
  • 2013年02月25日 22:01
  • 898

Real-Time Rendering 翻译 3.图形处理单元

历史上,图形硬件是从渲染管线的末端功能开始发展,最开始进行三角形的光栅化操作。经过成功的迭代,图形硬件从后往前接管渲染管线的功能,直达应用阶段直接向硬件提交数据。硬件相对于软件的唯一优势是速度,但速度...
  • su47yuwenshu
  • su47yuwenshu
  • 2016年06月17日 01:10
  • 988
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[翻译]-Windows CE 程序设计 (3rd 版)--5.2 公共控件(十)
举报原因:
原因补充:

(最多只允许输入30个字)