Проблема с дочерними окнами диалога
От: Blabla  
Дата: 26.10.06 14:29
Оценка:
Есть родительский диалог
CMyDialog: public CDialog

и два дочерних ему:
CChildDlgOne* pOne;
CChildDlgTwo* pTwo;


В методе CMyDialog::OnInitDialog я создаю два дочерних диалога следующим образом:
pOne->Create(MAKEINTRESOURCE(IDD_DLG_ONE), this);
pOne->SetWindowPos(&CWnd::wndTop, 200, 150, 0, 0, SWP_NOSIZE);
pOne->ShowWindow(SW_HIDE);

pTwo->Create(MAKEINTRESOURCE(IDD_DLG_TWO), this);
pTwo->SetWindowPos(&CWnd::wndBottom, 10, 10, 0, 0, SWP_NOSIZE);
pTwo->ShowWindow(SW_HIDE);



Далее по нажатию на кнопку в родительском диалоге я отображаю оба дочерних вот так;
pOne->ShowWindow(SW_SHOW);
pTwo->ShowWindow(SW_SHOW);


Все бы хорошо, но проблема в том, что некоторые контролы второго диалога необходимо расположить определенным образом, и из-за этого диалог становится достаточно высоким и перекрывает часть первого дочернего диалога.

Хотя первый диалог и находится наверху Z порядка, но перекрываемая его часть вторым дочерним диалогом не видна.
Если нажимать кнопки первого дочернего диалога, которые располагаются в месте перекрытия его вторым, то эти кнопки начинают прорисовываться и они нажимаются! Именно поэтому я думаю что окно наверху Z порядка.
Но если свернуть и развернуть родительское окно, то эти прорисовавшиеся кнопки пропадут и второй дочерний диалог опять перекроет часть первого.

Так вопрос вот в чем:
Как бы сделать так, что бы все рисовалось так как мне нужно, т.е. первое дочернее окно было наверху не только в Z порядке, но и визуально?
Re: Проблема с дочерними окнами диалога
От: vayerx  
Дата: 26.10.06 14:56
Оценка:
Здравствуйте, Blabla, Вы писали:

B>Как бы сделать так, что бы все рисовалось так как мне нужно, т.е. первое дочернее окно было наверху не только в Z порядке, но и визуально?


Z-порядок и так определяет очередность отрисовки окон и получения сообщений от мыши.
SetWindowPos должна помочь установить нужный порядок и выбрать активное окно
Re[2]: Проблема с дочерними окнами диалога
От: Blabla  
Дата: 26.10.06 15:08
Оценка:
Здравствуйте, vayerx, Вы писали:

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


B>>Как бы сделать так, что бы все рисовалось так как мне нужно, т.е. первое дочернее окно было наверху не только в Z порядке, но и визуально?


V>Z-порядок и так определяет очередность отрисовки окон и получения сообщений от мыши.

V>SetWindowPos должна помочь установить нужный порядок и выбрать активное окно


А нельзя ли поконкретней?

Я привел код, в котором использую функцию SetWindowPos, причем устанавливая тот порядок, который мне нужен, но это не решает моей проблемы...
Re: Проблема с дочерними окнами диалога
От: Blabla  
Дата: 27.10.06 11:12
Оценка:
Ну неужели никто не сталкивался с данной проблемой?
Re[2]: Проблема с дочерними окнами диалога
От: Blabla  
Дата: 27.10.06 13:19
Оценка:
Здравствуйте, Blabla, Вы писали:

B>Ну неужели никто не сталкивался с данной проблемой?


Все ребят, я решил проблему.

Нужно использовать стиль WS_CLIPSIBLINGS для дочерних окошек.

Странно что никто не знал ответ на этот как оказалось довольно простой вопрос...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.