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);
}
以上