Я хочу, чтобы мой диалог вёл себя как панель с возможностью закрепления. В приложении MDI на основе ленты MFC.C++

Программы на C++. Форум разработчиков
Anonymous
Я хочу, чтобы мой диалог вёл себя как панель с возможностью закрепления. В приложении MDI на основе ленты MFC.

Сообщение Anonymous »

Я создаю диалог, он унаследован от CDialogEx(имя класса диалога DockColorDlg) и создаю другой класс (ColorDockable), наследующий класс CDockablePane. И в моем классе ColorDockable я создаю экземпляр DockColorDlg (DockColorDlg m_wndDialog).
Теперь я звоню из моего Mainfram.cpp и создаю закрепляемое окно, когда я это реализую, оно будет работать, но после несколько раз или несколько сборок окно не будет создано
`# из моего Mainfrm.cpp:*

Код: Выделить всё

if (!m_wndMyDockablePane.Create(_T("Weaves & Color"), this, CRect(0, 0, 200, 200), TRUE,          ID_VIEW_MYDOCKABLEPANE, WS_CHILD | WS_VISIBLE | CBRS_TOP))
{
TRACE0("Failed to create dockable pane\n");
return -1; // fail to create
}

m_wndMyDockablePane.EnableDocking(CBRS_ALIGN_RIGHT | CBRS_ALIGN_LEFT);

DockPane(&m_wndMyDockablePane);

//this in my ColorDockable.cpp
int ColorDockable::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
TRACE("ColorDockable::OnCreate called\n");

if (CDockablePane::OnCreate(lpCreateStruct) == -1)
return -1;

if(!m_wndDialog.Create(IDD_DOC_COLOR_DLG, this));
{
TRACE("Failed to create dialog\n");
return 0; // Fail to create
}
bool check = m_wndDialog.ShowWindow(SW_SHOWNORMAL);
m_wndDialog.SetWindowPos(NULL, 0, 0, lpCreateStruct->cx, lpCreateStruct->cy, SWP_NOZORDER |    SWP_SHOWWINDOW);
//ShowDockableDialog();
return 0;
//но он не создан TRACE("Не удалось создать диалог\n");

Подробнее здесь: https://stackoverflow.com/questions/786 ... mdi-applic

Вернуться в «C++»