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

来源:互联网 发布:中信建投证券mac版 编辑:程序博客网 时间:2024/06/05 16:27
                                                                                                                         翻译:tellmenow
命令条上的组合框
同下拉列表按钮相比,命令条中的组合框更容易实现。通过调用下面的函数,您可以增加一个组合框:
HWND CommandBar_InsertComboBox (HWND hwndCB, HINSTANCE hInst,int iWidth, UINT dwStyle,WORD idComboBox,int iButton);
该函数在命令条上iButton参数所指示的按钮左边插入一个组合框。组合框的宽度在iWidth参数中指定,单位是像素。dwStyle指定了组合框的风格。允许的风格包括任何有效的Windows CE组合框风格和窗口风格。当创建组合框的时候,该函数自动加WS_CHILD和WS_VISIBLE标志。idComboBox参数是组合框的ID,当发送WM_COMMAND消息来通知组合框父窗口事件的时候会使用该ID。经验丰富的Windows程序员如果知道CommandBAr_InsertComboBox函数已经解决了在将控件加到标准Windows工具条时会发生的所有问题时,应该是很高兴的。要在命令条中创建一个完全功能的组合框,所有需要做的仅仅是调用这个函数即可。

一旦创建了组合框,您就可以按照对待其它独立组合框一样的方式,对命令条上的组合框进行编程了。因为组合框是命令条的子窗口,所以您必须将命令条的句柄以及组合框的ID传给GetDlgItem函数来查询组合框的窗口句柄,如下列代码所示:
hwndComboBox = GetDlgItem (GetDlgItem (hwnd, IDC_CMDBAR),IDC_COMBO));
由于来自组合框的WM_COMMAND消息被直接发送到了命令条的父窗口上,所以处理组合框事件同处理由应用程序顶层窗口创建的作为子窗口的组合框是一样的。

命令条的工具提示(Tooltips)
工具提示实际上是小窗口,当输入笔在控件上压触的时候,会在其中显示命令条按钮的描述文字。命令条使用自己特殊的方式来实现工具提示。

您可以使用以下函数给命令条增加工具提示:
BOOL CommandBar_AddToolTips (HWND hWndCB, UINT uNumToolTips, LPTSTR lpToolTips);
参数lpToolTips指向字符串指针数组。uNumToolTips是字符串指针数组中元素的个数。CommandBar_AddToolTips并不会将字符串复制到自己的存储区中,而是保存字符串数组的位置。这意味着在命令条被销毁之前,包含字符串数组的内存区不应该被释放。

数组里的每个字符串成为命令条上控件或者分隔条的提示文字,要注意的是,这并不包括命令条上面的菜单。数组里的第一个字符串成为第一个控件或者分隔条的工具提示,第二个字符串成为第二个控件或者分隔条的工具提示,依次类推。所以即使组合框和分隔条不显示工具提示,它们也必须要在字符串数组中占有条目,以保证所有的文本同相应的按钮匹配。

其它命令条函数
有许多其它函数用于帮助管理命令条。CommandBar_Height函数返回命令条的高度,并且用于所有使用命令条的示例程序中。同样地,不论什么时候使用命令条,都会用到CommandBar_AddAdornments函数。该函数原型如下:
BOOL CommandBar_AddAdornments (HWND hwndCB, DWORD dwFlags, DWORD dwReserved);
使用该函数,可以在命令条最右边增加[关闭]按钮、[帮助]按钮和[OK]按钮。通过将参数dwFlags设置成CMDBAR_HELP来增加[帮助]按钮,设置成CMDBAR_OK来增加[OK]按钮。

[帮助]按钮在处理上不同于命令条上的其它按钮。当[帮助]按钮被压下,命令条发送WM_HELP消息给命令条的拥有者,而不是通常标准的WM_COMMAND消息。[OK]按钮则是按惯常的方式处理。当按下时,会发送一个带控件标识IDOK的WM_COMMAND消息。必须当所有其它控件添加以后,才可以调用CommandBar_AddAdornments函数。

如果顶层窗口是可调整大小的,那在处理WM_SIZE消息时,必须给命令条发送一个TB_AUTOSIZE消息并调用BOOL CommandBar_AlignAdornments (HWND hwndCB)函数,以此来通知命令条调整大小。该函数唯一的参数就是命令条句柄。
通过调用BOOL CommandBar_Show (HWND hwndCB, BOOL fShow)函数,可以隐藏或者显示命令条。
fShow设置成TRUE则显示命令条,设置成FALSE则隐藏命令条。
可以使用BOOL CommandBar_IsVisible (HWND hwndCB)函数来查询命令条是否可视。
可以使用void CommandBar_Destory (HWND hwndCB)函数来销毁命令条。
虽然当父窗口被销毁的时会自动销毁命令条,但是有时手工销毁命令条会更方便一些。尤其是当应用程序的不同模式需要新的命令条的时候更是经常这么做。当然,您可以先创建多个命令条,将其中一个显示并隐藏其它的,随后通过每次只显示一个的方式来进行切换。但在Windows CE下这不是一个好的编程习惯,因为所有隐藏的命令条会占用宝贵的RAM。恰当的方式是在空闲的时候销毁和创建一个命令条。可以很快的创建一个命令条,快到用户不会察觉到有任何延迟。

原创粉丝点击