簡體   English   中英

MFC如何為狀態欄啟用停靠?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM