MDI-окно
От: Тема Украина  
Дата: 22.01.02 08:48
Оценка:
Здравствуйте!
Скажу сразу, что я не программист на VC++ (но сочуствующий ). Почему обратился сюда, потому вопрос мой связан (как мне кажется) именно с WinAPI. Может кто-нибудь подскажет как сделать на рантайме MDI Child-окно ИЗ не MDI-окна.
Возможно я оперирую неправильными терминами для VC++, потому как я программирую на другом языке (Clarion). Но, если по-простому мне нужно иметь возможность сделать окно так, чтобы при вызове некоторой процедуры (типа SetMDI(TRUE)), оно бы не вылазило за пределы главного фрейма (т.е. в моем понимании это MDIChild-окно), а при вызове процедуры
SetMDI(FALSE) могло опять перемещаться по всему экрану (т.е. стать обычным не MDI-окном). Надеюсь, что я объяснил более-менее понятно. Простите за ламерство, но все мы когда-то там были. Спасибо.
С уважением,
Алексей.
Re: MDI-окно
От: Edward Россия  
Дата: 22.01.02 12:15
Оценка:
Здравствуйте Тема, Вы писали:

Т>Здравствуйте!

Т>Скажу сразу, что я не программист на VC++ (но сочуствующий ;)). Почему обратился сюда, потому вопрос мой связан (как мне кажется) именно с WinAPI. Может кто-нибудь подскажет как сделать на рантайме MDI Child-окно ИЗ не MDI-окна.
Т>Возможно я оперирую неправильными терминами для VC++, потому как я программирую на другом языке (Clarion). Но, если по-простому мне нужно иметь возможность сделать окно так, чтобы при вызове некоторой процедуры (типа SetMDI(TRUE)), оно бы не вылазило за пределы главного фрейма (т.е. в моем понимании это MDIChild-окно), а при вызове процедуры
Т>SetMDI(FALSE) могло опять перемещаться по всему экрану (т.е. стать обычным не MDI-окном). Надеюсь, что я объяснил более-менее понятно. Простите за ламерство, но все мы когда-то там были. Спасибо.

SetWindowLong( hwndMDI, GWL_STYLE, GetWindowLong( hwndMDI, GWL_STYLE ) | WS_CHILD );//Это SetMDI( TRUE )

SetWindowLong( hwndMDI, GWL_STYLE, GetWindowLong( hwndMDI, GWL_STYLE ) ^ WS_CHILD );//Это SetMDI( FALSE )

при условии что Parent у hwndMDI как раз то окно за которое он не должен вылазить

Ed.ward
Re[2]: MDI-окно
От: Тема Украина  
Дата: 22.01.02 14:34
Оценка:
Здравствуйте Edward, Вы писали:


E>SetWindowLong( hwndMDI, GWL_STYLE, GetWindowLong( hwndMDI, GWL_STYLE ) | WS_CHILD );//Это SetMDI( TRUE )

E>SetWindowLong( hwndMDI, GWL_STYLE, GetWindowLong( hwndMDI, GWL_STYLE ) ^ WS_CHILD );//Это SetMDI( FALSE )
E>при условии что Parent у hwndMDI как раз то окно за которое он не должен вылазить

А Parent-то как задать? С помщью SetParent?
С уважением,
Алексей.
Re[3]: MDI-окно
От: Edward Россия  
Дата: 23.01.02 07:17
Оценка:
Здравствуйте Тема, Вы писали:

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



E>>SetWindowLong( hwndMDI, GWL_STYLE, GetWindowLong( hwndMDI, GWL_STYLE ) | WS_CHILD );//Это SetMDI( TRUE )

E>>SetWindowLong( hwndMDI, GWL_STYLE, GetWindowLong( hwndMDI, GWL_STYLE ) ^ WS_CHILD );//Это SetMDI( FALSE )
E>>при условии что Parent у hwndMDI как раз то окно за которое он не должен вылазить

Т>А Parent-то как задать? С помщью SetParent?

Ну насколько я понял главный фрэйм и так парент втоего окна, но если это не так, то действительно нужно сначала сделать

SetParent( hwndMDI, hwndParent );
//либо
SetWindowLong( hwndMDI, GWL_HWNDPARENT, hwndParent );
//GWL_HWNDPARENT не документирован, но работает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.