HOWTO: Create a System-Modal Program/Window in Visual BasicID: Q147817
|
From a Microsoft Visual Basic for Windows program under Windows 95, Windows
98, or Windows 3.x, you can disable the ability to switch to other Windows
programs by calling the Windows API function SetSysModalWindow. The method
outlined below will not work with Windows NT.
NOTE: An equivalent Win32 API function for SetSysModalWindow does not
exist. System modal windows contradict the concept of multitasking and thus
are not implemented in Win32.
Microsoft Windows is designed so that the user can switch between
applications without terminating one program to run another program. There
may be times when the program needs to take control of the entire
environment and run from only one window, restricting the user from
switching to any other application. An example of this is a simple security
system, or a time-critical application that may need to go uninterrupted
for long periods of time.
Passing the handle to the window through the argument of SetSysModalWindow
will limit the user to that particular window. This will not allow the user
to move to any other applications with the mouse or use ALT+ESC or CTRL+ESC
to bring up the Task Manager. You can even remove the system menu if you do
not want the user to exit through the ALT+F4 (Close) combination.
All child windows that are created by the system-modal window become system-
modal windows. When the original window becomes active again, it is system-
modal. To end the system-modal state, destroy the original system-modal
window.
Care must be taken when using the SetSysModalWindow API from within the
Visual Basic for Windows programming environment. Pressing CTRL+BREAK to
get to the [break] mode leaves your modal form with no way to exit unless
you restart your system. When using the SetSysModalWindow within the
environment, be sure to exit your application by destroying the window with
either the ALT+F4 in the system menu, or by some other means from within
your running program.
To use the SetSysModalWindow API function, declare the API call in your
global section, as follows:
Declare Function SetSysModalWindow Lib "User" (ByVal hwnd%) As Integer
Success% = SetSysModalWindow(hwnd)
Additional query words: kbVBp400 kb16only kbVBp kbDSupport kbdsd kbNoKeyWord
Keywords :
Version :
Platform : WINDOWS
Issue type : kbhowto
Last Reviewed: June 8, 1999