Окна и фокус

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Никитка Б
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 18.12.2005 (Вс) 9:26

Окна и фокус

Сообщение Никитка Б » 22.11.2007 (Чт) 17:01

Всем доброго времени суток.
Имеется приложение. с Одной MDI формой, и другими дочерними окнами.
Вообщем то хочется сделать так чтобы одна из этих дочерних форм была 1. по верх всех остальных(SetWindowPos, на чтото ругается, видимо из-за того что она дочерняя и принадлежит MDI) , 2. чтобы только она была активной. тоесть приложене не должно влиять ни на что(кроме естественно самой MDI) активного дочернего окна.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 22.11.2007 (Чт) 18:21

тогда делай SDI-интерфейс. или как вариант клади на главное окно MDI PictureBox и используй его как контейнер для своего фонового окна, но оно всегда будет позади MDI-Child окошек.

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 22.11.2007 (Чт) 18:40

Перебором всех mdichild кроме выбранной установить их св-во Enabled=false.
И только одна единственная будет активной и поверх всех.

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 22.11.2007 (Чт) 20:35

Не знаю как с дочерними, а с обычными окнами работает.

Код: Выделить всё
Сделать вашу форм поверх всех       
   Добавьте 2 CommandButton (под именем Command1 и Command2). Когда вы нажимаете первую кнопку, ваша форма поверх всех
Private Declare Function SetWindowPos Lib "user32" (ByVal h%, ByVal hb%, ByVal x%, ByVal Y%, ByVal cx%, ByVal cy%, ByVal F%) As Integer
Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const flags = SWP_NOMOVE Or SWP_NOSIZE
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2

Private Sub Command1_Click()
res = SetWindowPos(Form1.hwnd, HWND_TOPMOST, 0, 0, 0, 0, flags) 'Форма on-top
End Sub
Private Sub Command2_Click()
res = SetWindowPos(Form1.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, flags) 'Форма non-on-top
End Sub

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 23.11.2007 (Пт) 14:36

Saturn.65, автор же написал:
"..SetWindowPos, на чтото ругается.."
(см. выше)
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 58

    TopList  
cron