65.9K
CodeProject 正在变化。 阅读更多。
Home

PocketPC 2002 的选择条

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.67/5 (12投票s)

2003年3月13日

CPOL

2分钟阅读

viewsIcon

129944

downloadIcon

322

在 PocketPC 2002 应用程序中发现的选择栏的实现。

Sample Image - CeSelectBar.jpg

引言

本文介绍 Microsoft 的 PocketPC 2002 应用程序中存在的选择栏的一种实现。 在非常彻底地查看了 PPC 2002 SDK 之后,我没有找到可以实现此功能的 API,因此我决定自己实现它。

CCeSelectBar

选择栏通过 CCeSelectBar 类实现,该类派生自 MFC 的 CControlBar。 在选择栏实现的第一个方法中,我选择仅允许在用户单击两个可用选项之一时显示菜单。 这些选项位于左上角或右上角。 每个选择都根据菜单 (CMenu*)、一个标题字符串、一个选项字符串和一个可选图标来定义。

每个菜单都由整数标识,0 代表左侧,1 代表右侧。 这些应该在所有具有 nPos 参数的方法中使用。 这不是一个非常复杂的方法,但您可以确定,如果您失败,调试版本将断言。

标题字符串在菜单处于活动状态时显示(请参见图片中的右侧选择),并且通常在程序执行期间不会更改。 选项字符串在菜单未处于活动状态时显示,旨在告知用户当前选择了哪个选项。 图标应为 16 x 16 像素,并且可以随时更改,可能是为了响应用户的选择。

此栏只能附加到顶部,并且具有固定的高度。

使用选择栏

作为一个派生自 CControlBar 的类,您应该像在演示项目中一样,在您的 CMainFrame::OnCreate() 方法中创建它。 此项目使用 CChildView::SetSelectBar() 以便让子视图知道选择栏。 事实上,子视图负责实例化左侧和右侧菜单以及处理它们的状态,并且两个菜单的设置都在此方法中完成。

菜单命令处理程序除了在消息框中显示所选选项外,还通过 CheckMenuRadioItem() 设置选项字符串和菜单状态。

清除菜单

如果在应用程序过程中需要清除其中一个菜单,请使用 CCeSelectBar::ClearMenu() 方法。

替换菜单

可以使用演示项目中所示的初始化过程随时替换两个菜单中的任何一个。 请注意,管理 CMenu 对象是您的责任,而不是栏的责任。

外观

我尽了最大努力使这个栏的外观和操作都像 Microsoft 在其应用程序中实现的那样。 问题是,即使是他们,似乎在每个应用程序中都以不同的方式进行此操作。 只需看看他们在文件资源管理器和收件箱中的做法。 我选择复制第一个的外观和感觉。

© . All rights reserved.