Microsoft KB Archive/171978

= INFO: Non-Modal Form Support in Visual Basic DLLs =

Article ID: 171978

Article Last Modified on 1/9/2003

-

APPLIES TO


 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 6.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition
 * Microsoft Visual Basic 6.0 Enterprise Edition

-



This article was previously published under Q171978



SUMMARY
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.



MORE INFORMATION
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

Additional query words: kbVBp500 kbVBp600 kbVBp kbdsd kbDSupport kbNoKeyWord

Keywords: kbinfo KB171978

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.