Пакет компонентов MFC 2008 CPaneDialog как CDialogBar

Я пишу программное обеспечение с пакетом функций MFC 2008. Мое приложение основано на старой версии этого приложения. Старая версия не была написана с пакетом функций. В старой версии этого приложения есть CToolBar и 3 CDialogBars. Это выглядит следующим образом: введите описание изображения здесь

В своем приложении я изменил CToolBar на CMFCToolbar и CDialogBars на CPaneDialogs. Я не знаю, как настроить CPaneDialogs для создания такого же визуального эффекта, как в старом приложении? Как я могу закрепить CPaneDialogs слева от CMFCToolbar?

Подводя итог, что я сделал:

1) Создайте CPaneDialogs следующим образом:

    if (!m_LoadDlgBar.Create(_T("DialogBar"),this, 0,IDD_REGBAR,CBRS_TOP | CBRS_FLYBY |CBRS_GRIPPER|  WS_CLIPCHILDREN,IDD_REGBAR))
    {
       TRACE0("Failed to create dialog bar\n");
       return -1;      // fail to create
    }

2) стыковка:

EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_CommBar);          // this is CMFCToolbar
DockPaneLeftOf(&m_LoadDlgBar, &m_CommBar);    
DockPaneLeftOf(&m_TCPIPDlgBar, &m_LoadDlgBar);    
DockPaneLeftOf(&m_ConnDlgBar, &m_TCPIPDlgBar);    

3) Показать панель:

m_LoadDlgBar.ShowPane(TRUE,FALSE,FALSE);

И вот результат:

введите описание изображения здесь

Все CPaneDialogs закреплены в одном и том же месте на панели CMFCToolbar.


person Ahemski    schedule 15.06.2015    source источник


Ответы (1)


Вы инициируете стыковку с DockPane, поэтому вместо использования CFrameWndEx :: DockPane используйте CFrameWndEx :: DockPaneLeftOf

PS: Эта статья оказывает небольшую помощь, но, к сожалению, лишь поверхностно.

person xMRi    schedule 16.06.2015
comment
Я использую DockPaneLeftOf, но он работает некорректно. Пожалуйста, посмотрите в вопросе, я добавил некоторую информацию. - person Ahemski; 16.06.2015
comment
В чем ошибка. Ваш код закрепляет ваши окна CPaneDialog всегда слева от панели управления, а следующее снова слева от ... Если вы хотите получить панель управления слева от чего-то, вы должны это сделать. - person xMRi; 16.06.2015
comment
Я не понимаю. Не могли бы вы написать пример кода, чтобы показать, как это делать правильно? - person Ahemski; 16.06.2015
comment
DockPaneLeftOf (& m_LoadDlgBar, & m_CommBar); Указывает, что m_LoadDlgBar находится слева от m_CommBar. Вы должны отменить это, если хотите, чтобы m_LoadDlgBar располагался справа от m_CommBar. - person xMRi; 16.06.2015