Дочерние окна в Overlapped CHorSplitterWindow
От: lokoArt  
Дата: 31.05.12 05:58
Оценка:
Добрый день.
Подскажите почему у меня не получается создать дочерние окна внутри 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);

Но так делать совсем не охото, да и окно так медленно работает.
Re: Дочерние окна в Overlapped CHorSplitterWindow
От: rus blood Россия  
Дата: 31.05.12 15:27
Оценка:
Здравствуйте, lokoArt, Вы писали:

А если так?

A>
A>CDebugConsole m_console;
A>m_console.Create(NULL, rect, NULL, WS_OVERLAPPEDWINDOW | WS_VISIBLE);
A>
Имею скафандр — готов путешествовать!
Re[2]: Дочерние окна в Overlapped CHorSplitterWindow
От: lokoArt  
Дата: 01.06.12 01:44
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Здравствуйте, lokoArt, Вы писали:


RB>А если так?


A>>
A>>CDebugConsole m_console;
A>>m_console.Create(NULL, rect, NULL, WS_OVERLAPPEDWINDOW | WS_VISIBLE);
A>>


Так тоже не работает. Я перепробовал кучу комбинаций. Не могу понять. почему. Может это из-за того что все это дело я вызываю из тулбара для IE. Сейчас попробую отдельным проектом сделать.
Re: Дочерние окна в Overlapped CHorSplitterWindow
От: lokoArt  
Дата: 01.06.12 02:08
Оценка:
Попробовал в отдельном проекте. Ситуация аналогичная.
Все решается, конечно же если создавать перекрытым окном не SplitterWindow, а промежуточный класс. А потом уже туда child'ым создавать Spliter.
Этот Exception случается когда SplitterWindow делает ForwardNotification своему родителю. Но вот если родителя нет, т.е. окно перекрытое то и происходит Fail. Но мне вот интересно, почему так. Зачем ему обязательно нужно делать ForwardNotification своему родителю?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.