[英]MFC How to enable docking for a status bar?
我創建了狀態欄CStatusBar statusBar;
在class CMainFrame : public CFrameWnd
類,我正在這樣做:
if (!statusBar.CreateEx(this, TBSTYLE_AUTOSIZE, WS_CHILD | CBRS_TOP | WS_VISIBLE | CBRS_GRIPPER) ||
!statusBar.LoadToolBar(IDR_TOOLBAR))
{
return -1;
}
if (!statusBar.CreateEx(this, SBARS_TOOLTIPS, WS_CHILD | WS_VISIBLE | CBRS_BOTTOM | CBRS_GRIPPER))
{
return -1;
}
statusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
//然后嘗試:
statusBar.EnableDocking(CBRS_ALIGN_BOTTOM); // here I recieve an assertion
EnableDocking(CBRS_ALIGN_BOTTOM);
DockControlBar(&statusBar);
這有什么問題(工具欄幾乎具有相同的行為)? 是否可以使狀態欄啟用對接?
我相信這可能是因為我在圖片中有這個:
] 1
UPD
這就是我的代碼:
if (!m_wndStatusBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_BOTTOM | CBRS_GRIPPER | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))
{
TRACE0("Не удалось создать строку состояния\n");
return -1;
}
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT));
// TODO:
m_wndStatusBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndStatusBar);
而且我仍然收到一個斷言,只有當我添加DockControlBar(&m_wndStatusBar);
時,該斷言才成為DockControlBar(&m_wndStatusBar);
。 沒有它也是行不通的,我認為這很正常,但是為什么不行呢?
您的statusBar被創建兩次。 第二次沒有任何資源。 刪除第二個CreateEx,它應該可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.