Previous | Index | Next 

[PRB] Scrollbars in MDI forms are always visible

The Scrollbars property is only partially implemented in MDI forms, because setting this property to False doesn’t ensure that the scrollbars are really hidden.

In general, we recommend to set the Scrollbars property to True in MDI forms (its default value), because this is consistent with the behavior of all major MDI applications. If for any reason it is necessary to hide the scrollbars, you can use the following workaround

        Protected Overrides Sub WndProc(ByRef m As Message)
            If Not Me.ScrollBars AndAlso _
                  MyBase.MdiClientWindow IsNot Nothing AndAlso _
                  MyBase.MdiClientWindow.IsHandleCreated Then
                ShowScrollBar(MyBase.MdiClientWindow.Handle, 3, 0)
            End If
            MyBase.WndProc(m)
        End Sub 

Notice that the workaround isn’t perfect, because the scrollbar can become visible for an instant when an MDI child form is moved inside the MDI container.

The MdiClientWindow property (defined in the VB6MdiForm base class) returns the MdiClient object that corresponds to the inner area of an MDI form (it corresponds to the dark gray area). We decided to mark this property as protected and make it available to inherited classes to allow developers to be in full control of an MDI form.

 

Previous | Index | Next