Davide Calabro 的 CButtonST 类移植到 WTL






4.94/5 (9投票s)
2001年6月13日

145539

5210
一个功能齐全的属主绘制按钮类
引言
现在您可以在您的 ATL/WTL 项目中使用 Davide Calabro 优秀的 CButtonSt
类。该类仍然名为 CButtonSt
,并保留了大部分原始代码。只需按照以下简单步骤操作
- 创建一个 WTL 项目
- 设计对话框并添加按钮控件
- 将 ButtonST.h 头文件添加到您的项目中
- 将
CButtonSt
分配给每个按钮。 - 在
OnInitDialog
中,- 使用
SubclassWindow
方法将每个成员控件(CButtonST
)子类化到每个 ID。 - 使用
CButtonSt
方法来更改控件的外观。
- 使用
- 在您的对话框中,不要忘记添加宏
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 谢谢。