Visual Basic 4.0 ActiveX DLLs (in-process ActiveX Servers) could display
forms modally only. Visual Basic versions 5.0 and later allow you to
display forms modally or in modeless form. When designing a ActiveX DLL,
you have to take into consideration whether the client application supports
displaying modeless forms.
Modeless forms displayed by in-process components cannot function correctly
unless they can communicate with the client's message loop. Therefore, in-
process components created with Visual Basic can display modeless forms
only in client processes that support such communication.
The following applications support the display of modeless forms by in-
process components:
| • | Applications created with Visual Basic 5.0 or later.
|
| • | Microsoft Office 97 or later.
|
| • | Applications that have the Visual Basic Technology logo.(Those that
license Visual Basic for Applications version 5.0 or later.)
|
Applications that do not support the display of modeless forms by in-
process components include:
| • | Applications created with earlier versions of Visual Basic.
|
| • | Earlier versions of Microsoft Office.
|
| • | Version 3.0 of Microsoft Internet Explorer.
|
To allow in-process components to detect at run time whether a client
application supports the display of modeless forms, Visual Basic provides
the Boolean NonModalAllowed property of the App object.
An in-process component should test this property before showing a modeless
form. If the value is True, the form can be shown vbModeless. If the value
is False, showing a modeless form will cause run-time error 369. The
component should degrade gracefully by showing the form vbModal instead.
For example:
If App.NonModalAllowed Then
Form1.Show vbModeless
Else
Form1.Show vbModal
EndIf