关于CDialogBar的使用

本文介绍了CDialogBar的用途及初始化过程,并详细说明了如何通过派生类设置命令响应及控件样式,包括如何处理控件颜色及按钮响应。

CDialogBar 的用途和CDialog差不多,但是它是派生于CControlBar,不是派生于CDialog 。所以有点陌生。

 

CDialogBar 的初始化:

 1.先从CDialogBar派生一个新的类 比如CMyDialogBar

 2.然后在CMainFrame类中,创建一个CMyDialogBar 对象。

 3.在OnCreate中,添加m_dialogbar.Create(this //父窗口指针

,IDD_DIALOG1, //资源

CBRS_LEFT|CBRS_TOOLTIPS|CBRS_FLYBY, //风格

122) //ID号,随便指定了

 4.然后调用 m_dialogbar.EnableDocking(CBRS_ALIGN_ANY) 和DockControlBar(&m_dialogbar) 允许被停靠

以上是CDialog的初始化

 

CDialogBar 命令响应

你可以在派生的CMyDialogBar中,设置相应的消息响应函数

比如你想设置工具条的背景,就可以在WM_PAINT的OnPaint函数中,用GDI技术来实现

想要设置每个控件的具体颜色的话,还可以在 OnCtlColor函数中,设置代码

 

HBRUSH CYXdialogbar::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialogBar::OnCtlColor(pDC, pWnd, nCtlColor);
    if(pWnd->GetDlgCtrlID()==IDC_SHOW)
    {
        pDC->SetBkColor(RGB(255,255,0));
        //return CBrush(RGB(255,255,0));
    }
    return hbr;
}

 

这样就可以设置控件IDC_SHOW的颜色了

而不是在CMainFrame类中 调用OnCtlColor来更改DIALOGBAR中的颜色

 

 

如果 在DIALOGBAR中有一个BUTTON要响应 的话

就可以在CMYDIALOGBAR这个派生于CDIALOGBAR的类中,定义afx_msg函数,来进行消息的处理

void CMydialogbar::OnBnClickedButton1()
{
    MessageBox("good");
}

但是由于没有设置相应的更新函数,所以按钮即使设置了处理函数后,还是灰的

所以要手动添加 按钮的 ON_UPDATE_COMMAND_UI(IDC_BUTTON1,OnUpdateButton)

就是在 .h中添加处理函数

afx_msg void OnUpdateButton(CCmdUI *pCmdUI);

在.cpp中添加 ON_UPDATE_COMMAND_UI(IDC_BUTTON1,OnUpdateButton)

以及实现消息处理函数

void CYXdialogbar::OnUpdateButton(CCmdUI *pCmdUI)
{
    pCmdUI->Enable(TRUE);
}

 

以上

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值