菜单条 翻译: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);
分享到:
相关推荐
最新版windows graalvm-ce-java17-windows-amd64-22.2.0.zip最新版windows graalvm-ce-java17-windows-amd64-22.2.0.zip
最新版windows graalvm-ce-java11-windows-amd64-22.2.0.zip最新版windows graalvm-ce-java11-windows-amd64-22.2.0.zip
《Windows CE程序设计(中文版)》是一本深入探讨Windows CE平台应用程序开发的专业书籍,它为读者揭示了在Windows CE操作系统上构建高效、稳定且功能丰富的应用程序的技术与策略。这本书籍以其独特的外国人写作风格...
最新版windows graalvm-ce-java8-windows-amd64-20.3.0.zip最新版windows graalvm-ce-java8-windows-amd64-20.3.0.zip
《Microsoft Windows CE 程序设计》是一本深入探讨Windows CE平台应用程序开发的专业教程。Windows CE,全称为“Compact Edition”,是微软推出的一种嵌入式操作系统,主要用于掌上设备、工业自动化、汽车导航系统等...
《Windows CE程序设计》这本书是针对初学者和开发者的一份宝贵资源,主要涵盖了Windows CE操作系统的基础知识以及在该平台上进行程序开发的技术细节。Windows CE是一个嵌入式操作系统,广泛应用于移动设备、工业控制...
PDF到Windows CE程序设计是一个涉及移动设备开发的重要主题。Windows CE是一种嵌入式操作系统,广泛应用于掌上电脑、工业设备和车载系统等。本资源提供了一本关于如何在Windows CE平台上进行程序设计的PDF电子书,这...
标题和描述中提到的"UT-890 485-USB能用驱动"是一款专为基于Windows CE操作系统,特别是版本4.2至5.2,并且在ARM架构的XScale处理器上运行的设备设计的驱动程序。这款驱动允许UT-890 485-USB模块在这些设备上正常...
graalvm-ce-java8-windows-amd64-21.0.0.2.zip
《Windows CE程序设计实务:使用eMbedded Visual Basic》这本书是李永隆编著的一本专业指南,由中国电力出版社出版,ISBN号为9787508309408。这本书主要聚焦于如何利用eMbedded Visual Basic(EVB)在Windows CE平台...
1.3 第一个WindowsCE应用程序 1.3.1 创建第一个WindowsCE应用程序 1.3.2 运行程序 1.3.3 出了什么问题 1.4 Hello2程序 1.5 剖析窗口应用程序 1.5.1 窗口 1.5.2 窗口类 1.5.3 窗口过程 1.5.4 消息的生命期 1.5.5 注册...
GraalVM(graalvm-ce-java17-windows-amd64-21.3.0.zip适用于Windows (amd64)), GraalVM 是一个高性能 JDK 发行版,旨在加速用 Java 和其他 JVM 语言编写的应用程序的执行,并支持 JavaScript、Ruby、Python 和...
6. **兼容性**:尽管Windows CE是为嵌入式设备设计的,但它与传统的Windows桌面系统有一定的兼容性,比如文件系统、应用程序接口(API)等,这有助于降低开发成本并提升用户体验。 7. **网络和通信**:Windows CE...
最新版windows graalvm-ce-java11-windows-amd64-21.2.0.zip最新版windows graalvm-ce-java11-windows-amd64-21.2.0.zip
《Programming Windows CE 程序设计(第三版)》是一本深入探讨在Windows CE平台上进行程序开发的专业书籍。Windows CE是微软开发的一个嵌入式操作系统,广泛应用于掌上设备、工业控制、汽车电子等领域。本书作为第三...
《深入理解GraalVM:基于graalvm-ce-java11-windows-amd64-21.0.0.2.zip的探索》 GraalVM,全称为“GraalVM”,是一款高性能的运行时环境,它集成了Java虚拟机(JVM)、JavaScript引擎、Truffle框架以及自优化的...
同时,由于Windows CE 5.0与桌面版Windows的相似性,使得开发者更容易上手,提高开发效率。 总结,Windows CE 5.0是嵌入式领域的重要操作系统之一,其灵活性、可裁剪性和广泛的硬件支持使得它在多个行业得到了广泛...
在"最新版windows graalvm-ce-java11-windows-amd64-21.3.0.zip"这个压缩包中,我们讨论的是针对Windows平台、基于AMD64架构的GraalVM社区版(Community Edition)的21.3.0版本,与Java 11兼容。 1. GraalVM概述:...
《Microsoft Windows CE 程序设计》是一本深入探讨Windows CE平台应用程序开发的专业书籍。Windows CE,全称为“Microsoft Windows Embedded Compact”,是微软推出的一种面向嵌入式系统的实时操作系统,广泛应用于...
《Windows CE程序设计》是一本深入探讨在Windows CE操作系统上进行程序开发的指南。Windows CE是一种嵌入式操作系统,常用于掌上设备、工业设备和汽车电子系统等。本教材旨在帮助开发者理解和掌握如何利用Windows CE...