///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//2006-03-05
//由于最近事情比较多,不能像以前一样,翻译一整节再发布了,所以决定采用分散翻译,分散发布的方式。
//每次会翻译一部分就发布,等该节全部翻译完,再汇总成一个完整的章节。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
翻译: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并不会将字符串复制到自己的存储区中,而是保存字符串数组的位置。这意味着在命令条被销毁之前,包含字符串数组的内存区不应该被释放。
数组里的每个字符串成为命令条上控件或者分隔条的提示文字,要注意的是,这并不包括命令条上面的菜单。数组里的第一个字符串成为第一个控件或者分隔条的工具提示,第二个字符串成为第二个控件或者分隔条的工具提示,依次类推。所以即使组合框和分隔条不显示工具提示,它们也必须要在字符串数组中占有条目,以保证所有的文本同相应的按钮匹配。