使用本机 C++ 进行 windows vista 开发(2)

http://www.sina.com.cn 2008年06月13日 10:45  新浪科技

  按钮控件

  按钮控件主要负责 windows vista 中几项看似新增的控制功能。与传统按钮相比,新的样式标记采用了明显不同的外观。图 1 显示了一些新的按钮样式。

使用本机C++进行windowsvista开发(2)

图 1 新的 windows vista 按钮样式

  BS_SPLITBUTTON 样式可创建拆分按钮。该按钮的父窗口接收指示用户单击了该按钮上的下拉箭头的 BCN_DROPDOWN 通知消息。然后,由用户负责显示快捷菜单。可能按如下所示实现用户的下拉处理程序:

  CRect rectangle; VERIFY(m_splitButton.GetWindowRect( &rectangle)); TPMPARAMS params = { sizeof(TPMPARAMS) }; params.rcExclude = rectangle; CMenuHandle menu = m_menu.GetSubMenu(0); VERIFY(menu.TrackPopupMenuEx(TPM_LEFTBUTTON, rectangle.left, rectangle.bottom, m_hWnd, &params));

  此代码段首先计算按钮的边界,然后填充 TPMPARAMS 结构以通知 TrackPopupMenuEx;如果菜单无法在预定位置显示,它不应与该按钮重叠,而应显示在下一个可用边缘上。您还可以使用 BCM_GETSPLITINFO 和 BCM_SETSPLITINFO 消息来查询和调整下拉箭头的外观,但多数情况下,默认设置就完全可以满足您的需求。

  BS_COMMANDLINK 样式可创建命令链接。命令链接的特点是在按钮的标题旁边显示一个箭头,还会以较小的字体显示可选说明。按钮的标题通常是使用 SetWindowText 函数来设置,而新的 BCM_SETNOTE 消息设置了显示在标题下面的说明。

  最后,您可以让 windows 在按钮上显示时下著名的“所需提升”屏蔽,具体方法是:向其发送 BCM_SETSHIELD 消息,将 LPARAM 设置为 TRUE 可包括图标,设置为 FALSE 可删除图标。以下是一个简单示例:

  button.SendMessage(BCM_SETSHIELD, 0, required);

  编辑

  windows xp 引入了使用 EM_SETCUEBANNER 消息在编辑控件上显示文本提示的功能。此文本提示将提示用户注意当控件获得焦点时消失的信息。Windows vista 对此进行了适度而有价值的补充,使您能够在控件获得焦点时依然显示文本提示。这个看似微小的改进使得静态控件在许多情况下不再必要。只须使用以前未使用的 WPARAM,将其设为 TRUE,即可利用此功能。为简便起见,提供了 Edit_SetCueBannerTextFocused 宏:

  VERIFY(Edit_SetCueBannerTextFocused(m_edit, L”Cue text”, TRUE));

  windows vista 还使用 CB_SETCUEBANNER 消息以大致相同的方式为组合框提供了此功能。但是,Windows vista 不提供当控件具有焦点时,显示文本提示的选项,只有“下拉列表”式组合框会继续显示文本提示,直至做出选择为止,如图 2 所示。

使用本机C++进行windowsvista开发(2)

图 2 组合框示例

  为简便起见,提供了 ComboBox_SetCueBannerText 宏:

  VERIFY(ComboBox_SetCueBannerText(m_comboBox, L”Cue text”));

本文导航:
·前言
·按钮控件
·树视图控件
·标头控件和列表视图控件
·关于 .NET

发表评论 _COUNT_条
Powered By Google
不支持Flash
·城市对话改革30年 ·新浪城市同心联动 ·诚招合作伙伴 ·企业邮箱畅通无阻
不支持Flash