Прокрутка формы MDI

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

Прокрутка формы MDI

Сообщение Jupiter » 25.05.2007 (Пт) 13:13

У меня есть форма MDI, а в ней дочерняя форма. Я делаю прокрутку формы MDI так, чтобы было видно определенное место внутренней дочерней формы. Использую ScrollWindow для MDIClient. Но после этого значения Top и Left внутренней формы не меняется. А тогда как мне определить, насколько окно MDI уже прокручено? Что-то типа GetScroll есть? Я мог бы воспользоваться GetScrollPos и GetScrollRange для этой цели, но я не понимаю, как полученные значения связаны с координатами в окне.

Ну, то есть вы поняли, да? Я должен сначала определить, видна ли на экране нужная область дочернего окна, и если она не видна, то прокрутить MDI так, чтобы внутреннее окно сместилось и его нужная часть была видна на экране. Прокручивать окно MDI в слепую я научился, а вот оценить ситуацию: - где реально находится внутреннее окно с учетом прокрутки – я не могу: значения child.Top и child.Left не меняются после прокрутки внешней формы. Надеюсь, понятно…

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.05.2007 (Пт) 13:28

GetWindowRect для дочернего окна не пробовал?
Изображение

Jupiter
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 17.01.2006 (Вт) 12:34

Сообщение Jupiter » 25.05.2007 (Пт) 14:37

tyomitch писал(а):GetWindowRect для дочернего окна не пробовал?
Да, это мне поможет, спасибо! В экранных координатах, можно пересчитать в оконные и т.д.
И, надеюсь, последний вопрос из этой серии: После ScrollWindow у полосы прокрутки ползунок остается на прежнем месте. Только когда просто наведу мышь на полосу, ползунок перескакивает в соответствии с новым скролом. Как-то надо обновить программно положение ползунка.
Спасибо.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.05.2007 (Пт) 14:56

RedrawWindow(RDW_INVALIDATE) не пробовал?
Изображение

Jupiter
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 17.01.2006 (Вт) 12:34

Сообщение Jupiter » 25.05.2007 (Пт) 16:10

tyomitch писал(а):RedrawWindow(RDW_INVALIDATE) не пробовал?
Хм, действительно... Бывают же умные люди!


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

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

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

    TopList