Добрый день.
Подскажите почему у меня не получается создать дочерние окна внутри CHorSplitterWindow.
Последовательность действий:
1) Наследую CHorSplitterWindow и в OnCreate пытаюсь создать CListViewCtrl с флагом child.
2) Создаю класс унаследованный от CHorSplitterWindow с флагом overlapped_window и вижу ошибку при создании контролла в OnCreate. Ошибка в CWindow::SendMessage(atlwin.h)
Вот части кода.
CDebugConsole
: public CHorSplitterWindow
...
WTL::CListViewCtrl m_hwndList;
...
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
m_hwndDetails.Create(*this, rcDefault, NULL
, WS_CHILDWINDOW | WS_VISIBLE | ES_MULTILINE | ES_READONLY, WS_EX_CLIENTEDGE);
CDebugConsole m_console;
m_console.Create(::GetDesktopWindow(), rect, NULL, WS_OVERLAPPEDWINDOW | WS_VISIBLE);
Вот это не работает. Почему я не могу создать child окно в overlapped_window?
Зато вот этот код работает если я вот так создам экземпляр своего окна.
CDebugConsole m_console;
m_console.Create(::GetDesktopWindow(), rect, NULL, WS_OVERLAPPEDWINDOW | WS_CHILD | WS_VISIBLE);
Но так делать совсем не охото, да и окно так медленно работает.
Здравствуйте, lokoArt, Вы писали:
А если так?
A>A>CDebugConsole m_console;
A>m_console.Create(NULL, rect, NULL, WS_OVERLAPPEDWINDOW | WS_VISIBLE);
A>
Здравствуйте, rus blood, Вы писали:
RB>Здравствуйте, lokoArt, Вы писали:
RB>А если так?
A>>A>>CDebugConsole m_console;
A>>m_console.Create(NULL, rect, NULL, WS_OVERLAPPEDWINDOW | WS_VISIBLE);
A>>
Так тоже не работает. Я перепробовал кучу комбинаций. Не могу понять. почему. Может это из-за того что все это дело я вызываю из тулбара для IE. Сейчас попробую отдельным проектом сделать.
Попробовал в отдельном проекте. Ситуация аналогичная.
Все решается, конечно же если создавать перекрытым окном не SplitterWindow, а промежуточный класс. А потом уже туда child'ым создавать Spliter.
Этот Exception случается когда SplitterWindow делает ForwardNotification своему родителю. Но вот если родителя нет, т.е. окно перекрытое то и происходит Fail. Но мне вот интересно, почему так. Зачем ему обязательно нужно делать ForwardNotification своему родителю?