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

Davide Calabro 的 CButtonST 类移植到 WTL

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.94/5 (9投票s)

2001年6月13日

viewsIcon

145539

downloadIcon

5210

一个功能齐全的属主绘制按钮类

CButtonST

CButtonST

CButtonST

CButtonST

引言

现在您可以在您的 ATL/WTL 项目中使用 Davide Calabro 优秀的 CButtonSt 类。该类仍然名为 CButtonSt,并保留了大部分原始代码。只需按照以下简单步骤操作

  1. 创建一个 WTL 项目
  2. 设计对话框并添加按钮控件
  3. ButtonST.h 头文件添加到您的项目中
  4. CButtonSt 分配给每个按钮。
  5. OnInitDialog 中,
    • 使用 SubclassWindow 方法将每个成员控件(CButtonST)子类化到每个 ID。
    • 使用 CButtonSt 方法来更改控件的外观。
  6. 在您的对话框中,不要忘记添加宏 REFLECT_NOTIFICATIONS,它允许按钮接收诸如 WM_DRAWITEM 之类的消息。
  
class MyDialog : public CDialogImpl<MyDialog>
{
  BEGIN_MSG_MAP(MyDialog)
    ...
    MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
    REFLECT_NOTIFICATIONS()
  END_MSG_MAP()
  ...
  LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, 
    LPARAM /*lParam*/, BOOL& /*bHandled*/);
  ...
  CButtonST m_btn;
  ...
};

LRESULT MyDialog::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/,
  LPARAM /*lParam*/, BOOL& /*bHandled*/) 
{
  ...
  m_btn.SubclassWindow(GetDlgItem(IDC_BTN));
  m_btn.SetIcon(IDI_EOAPP);
  m_btn.SetFlat(false);
  ...
}

有关更多详细信息,请参阅 Davide Calabro 原始的 CButtonSt 文章

最新更新

  • 2001 年 6 月 26 日
    • 更新到 Davide Calabro 的版本 3.2
    • 添加了从图像列表中定义图标的支持
    • 添加了动态创建按钮的支持
  • 2001 年 6 月 14 日 - 修复了自动重复功能中的一个错误

Serge 谢谢。

© . All rights reserved.