MFC中CDialogBar实现根据传入的按钮数量和显示文本、背景颜色派生一个子类,需要全部代码
36浏览 · 2024-03-23 15:36:46
好的,以下是实现[代码](https://geek.csdn.net/educolumn/1572ef9b473b4e00f6b2bf6d428b7c27?spm=1055.2569.3001.10083):
首先,我们需要创建一个自定义的对话框栏类,派生自CDialogBar:
class CMyDialogBar : public CDialogBar
DECLARE_DYNAMIC(CMyDialogBar)
public:
CMyDialogBar();
virtual ~CMyDialogBar();
protected:
DECLARE_MESSAGE_MAP()
private:
// 用于存储按钮信息的结构体
struct ButtonInfo {
C[string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083) text; // 按钮文本
COLORREF color; // 按钮背景颜色
std::vector<ButtonInfo> m_buttons; // 存储所有按钮信息的容器
public:
// 添加一个按钮
void AddButton(const C[string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)& text, COLORREF color);
protected:
virtual BOOL OnInitDialogBar();
virtual void DoDataExc[han](https://geek.csdn.net/educolumn/0d22b54eaf6bcf967d9625e1679d00b4?spm=1055.2569.3001.10083)ge(CDataExc[han](https://geek.csdn.net/educolumn/0d22b54eaf6bcf967d9625e1679d00b4?spm=1055.2569.3001.10083)ge* pDX);
virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
afx_msg void OnPaint();