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

炫酷的弹出菜单按钮

2000年6月29日

viewsIcon

479740

downloadIcon

6826

本文档展示了如何使用一个带有下拉菜单的按钮,类似于 Office 2000 套件中的按钮。

Sample Image - coolbtn.jpg

引言

本文档展示了如何使用一个带有下拉菜单的按钮,类似于 Office 2000 套件中的按钮。代码被封装在一个 MFC 类中。该类本身是从 CButton 类派生而来的,通过从这个类派生,提供了大部分按钮的行为。

代码的核心是绘制按钮及其行为的绘图例程。此外,还大量使用了鼠标捕获代码。

访问该类的公共接口如下所示...

BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, 
                  const RECT& rect, CWnd* pParentWnd, UINT nID );
BOOL SetButtonImage(UINT nResourceId, COLORREF crMask);
BOOL AddMenuItem(UINT nMenuId,const CString strMenu, UINT nFlags);

这些函数用于创建类,设置按钮的位图,并为下拉菜单添加菜单项。

位图必须作为位图资源添加到类中,最好使用标准工具栏按钮大小(16x15 像素)。

遮罩的颜色引用通常是 RGB(255,0,255)(品红色)。

菜单项通过 AddMenuItem 函数添加到菜单按钮。您需要创建一个资源符号,并使用 Windows API 中菜单下的相关菜单标志(超出本文档的范围)。然后,将命令处理程序添加到父窗口的消息映射中(请参阅代码示例)。

在所示的示例中,按钮是在 OnInitDialog 处理程序中构造的。按钮被创建为窗口,但可以很容易地更改为子类化对话框项。

该类仍有改进空间;可以添加 RemoveMenuItemModifyMenuItem,并且可以修改 SetButtonImage 以替换当前图像,但不幸的是,项目截止日期阻止我添加此功能。

历史

  • 2000 年 7 月 29 日 - 更新了源代码和演示
  • 2003 年 7 月 4 日 - 更新了源代码和演示

许可证

本文档没有明确的许可证附加到它,但可能包含文章文本或下载文件本身中的使用条款。如有疑问,请通过下面的讨论区联系作者。作者可能使用的许可证列表可以在 此处 找到。

© . All rights reserved.