【发布时间】:2012-01-20 18:55:55
【问题描述】:
我正在使用 VS2005 和 MFC。我在网上按照一些代码将静态文本添加到工具栏。但是,将样式设置为 TBSTYLE_FLAT 或 (TBSTYLE_FLAT | TBSTYLE_TRANSPARENT),分隔符变得可见,看起来像文本上方的一个小刻度线。有没有更好的方法在 CToolBar 上显示静态文本或使分隔符在文本后面不可见?谢谢!
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
//Create Static Text
CRect rect;
int nIndex = m_wndToolBar.GetToolBarCtrl().CommandToIndex(ID_STATIC_TEST);
m_wndToolBar.SetButtonInfo(nIndex, ID_STATIC_TEST, TBBS_SEPARATOR, 40);
m_wndToolBar.GetToolBarCtrl().GetItemRect(nIndex, &rect);
rect.top = 5;
rect.right = rect.left + 50;
if(!m_static.Create("Test", WS_CHILD | WS_VISIBLE | SS_CENTER, rect, &m_wndToolBar))
{
TRACE(_T("Failed to create Static Text\n"));
return FALSE;
}
// TODO: Delete these three lines if you don't want the toolbar to be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
}
【问题讨论】:
-
您在网上查到的代码不正确。它只是向工具栏添加一个静态控件。工具栏不知道它或说明它的存在。