CMFCToolBar、CMFCStatusBar

时间:2024-06-28 11:05:44

首先删除注册表
HKEY_CURRENT_USER\Software\应用程序向导生成的本地应用程序
之下你这铬软件的配置

CMFCToolBar m_myToolBar;
CMFCToolBarImages m_mfcToolbarImage;

//设置一个ID,不然添加不到菜单的视图工具栏集合
m_myToolBar.CreateEx(this, TBSTYLE_FLAT, dwStyle, CRect(1, 1, 1, 1), 1000);
m_myToolBar.AddToolBarForImageCollection(IDR_TOOLBAR1, IDB_BITMAP1);
CString name;
bNameValid = name.LoadString(IDS_MyToolBar);
ASSERT(bNameValid);
m_myToolBar.SetWindowText(name);
m_myToolBar.SetSizes(CSize(23, 22), CSize(16, 15));//设置按钮大小
m_mfcToolbarImage.SetImageSize(CSize(16, 15), TRUE);

CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
m_mfcToolbarImage.AddImage(bmp);

bmp.DeleteObject();

//int aa = m_myToolBar.SetUserImages(&m_mfcToolbarImage);

m_myToolBar.RemoveAllButtons();

// 按钮ID 第几个图片
m_myToolBar.InsertButton(CMFCToolBarButton(ID, 0, _T("提示?"), TRUE, 0));// 在这里CMFCToolBarButton()第四个参数需要设置为true,这样在重绘的时候才会,调用自己设置的图像。

m_myToolBar.AdjustSizeImmediate();

//添加组合框
m_myToolBar.InsertButton(CMFCToolBarComboBoxButton(2000, 0), index);

//设置组合框属性
m_comboAddress = (CMFCToolBarComboBoxButton*)m_myToolBar.GetButton(index);
m_comboAddress->EnableWindow(TRUE);
m_comboAddress->SetCenterVert();
m_comboAddress->SetDropDownHeight(100);//设置下拉列表的高度
m_comboAddress->SetFlatMode();

//添加内容
m_comboAddress->AddItem(_T("once"));
m_comboAddress->AddItem(_T("if only"));
m_comboAddress->AddItem(_T("P.S.I Love You"));
m_comboAddress->AddItem(_T("Love Me If You Dare"));
m_comboAddress->SelectItem(0); //默认选中

//添加消息处理映射
ON_COMMAND(IDR_COMBOBOX1, &CMainFrame::OnClickComboBox)
ON_CBN_SELCHANGE(IDR_COMBOBOX1, &CMainFrame::OnSelectChange)

afx_msg void OnClickComboBox();
afx_msg void OnSelectChange();

void CMainFrame::OnClickComboBox()
{//OnClickComboBox没有做任何处理,但是如果去掉的话,组合框将编程灰色,无法使用

}
void CMainFrame::OnSelectChange()
{
CMFCToolBarComboBoxButton* pSrcCombo = CMFCToolBarComboBoxButton::GetByCmd(IDR_COMBOBOX1, TRUE);
int index = m_comboBox->GetCurSel();
index = pSrcCombo->GetCurSel();
CString str = pSrcCombo->GetItem(index);
AfxMessageBox(str);
}

CMFCStatusBar

..添加消息映射,不然自定义的改变颜色无效
ON_COMMAND_RANGE(ID_START, ID_END, NULL)  //indicators[] 里面第一个和最后一个

if (!m_wndStatusBar.Create(this))
{
TRACE0("未能创建状态栏\n");
return -1; // 未能创建
}
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT));
m_wndStatusBar.SetPaneWidth(1, 105);
m_wndStatusBar.SetPaneTextColor(1, RGB(0, 0, 255));
m_wndStatusBar.SetPaneText(1, strTime);