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

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

Сообщение 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;
}

//but its not created TRACE("Failed to create dialog\n");


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

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