Приложение MDI vb6 - когда форма mdi развернута, она попадает под вопрос состояния нижней строки - PullRequest
0 голосов
/ 20 декабря 2018

Я работаю над старым приложением Visual Basic 6, которое только что разработало проблему, которой раньше никогда не было.

Это приложение формы MDI, которое имеет 1 главное окно с меню ввверху и строка состояния внизу, вместе с двумя другими статусами, такими как строки.Он также имеет около 50 дочерних окон, чтобы попасть в этот мастер-кадр.

Когда пользователь максимизирует любое дочернее окно, кажется, что окно максимизируется, но не замечает панелей инструментов внизу и максимизируется под ними (вне поля зрения), поэтому нижняя часть дочернего окна не совпадает с верхней частью панелей инструментов.

Я сделал 4 рисунка, которые показывают, что это время разработки, время выполнения нормальное, а затем развернуто, как вы можете видеть, оно скрываетсякнопки.

Я никогда не видел этого раньше

Я пытался закодировать некоторую логику изменения размера, чтобы противодействовать этому в дочернем событии Private Sub Form_Resize (), однако это никак не влияет.

Что заставляет меня верить, что изменение размера окна при максимизации обрабатывается самой системой Windows или скрывается глубоко в VB, где я не могу его изменить.

Ни один из элементов управления не имеетизменено добавлено / удалено в формах, и я не изменил никакие значения формы / элемента управления, насколько я помню.

Я также пытался привестиНг органы управления спереди, затем сзади и т. д., без последствий

Я пытался изменить зиндекс во всех отношениях, без последствий

Кто-нибудь когда-либо видел это раньше или есть идеи

Спасибо за чтение, любая помощь будет принята с благодарностью

Спасибо

нормальная работа не максимальная

макс. Показ экранавыпуск

maxxed даже при закрытом верхнем меню

время разработки vb6

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Чистое решение VB6 для дочерней формы:

Private Sub Form_Resize() 
  If WindowState <> vbMinimized then 
    Begin
      If WindowState = vbMaximized then
        WindowState = vbNormal
      Top = Me.Parent.Top + Me.Parent.TopToolbar.Height
      Height = Me.Parent.Height - Me.Parent.TopToolbar.Height - Me.Parent.BottomToolbar.Height
    End

Хитрость заключается не в том, чтобы разрешить максимальный режим, а в том, чтобы изменить размер окна в соответствии с оставшимся пространством.

Строка заголовкавсе еще в верхней части окна MDI, в отличие от максимизируемого поведения по умолчанию.

Прошло уже более 10 лет с тех пор, как я использовал VB6, прошу прощения за любые недостатки кода.

0 голосов
/ 21 декабря 2018

У меня нет решения (пока), но я столкнулся с той же проблемой с моим приложением.Я считаю, что проблема вызвана виртуальным рабочим столом Win-7 / Win-10;приложение VB6 считает, что оно использует весь экран, но панель задач находится на отдельном виртуальном экране, который находится сверху.Я опубликую в этой теме, если я решу это ...

...