ID Number: Q66945
3.00
WINDOWS
SYMPTOMS
After an implicitly loaded dynamic-link library (DLL) attempts to
create a window in its initialization procedure, a Fatal Exit
0x0019 occurs.
CAUSE
When an application is loaded, Windows loads any DLLs that are
implicitly referenced by that application prior to initializing the
application's task. Part of task initialization is creating a
message queue for that application. By the time the application's
WinMain() function is called, the message queue has been created.
Any window created by a DLL uses the message queue of the
application task using that DLL. If an implicitly loaded DLL
creates a window in its initialization code (that is, LibMain)
there is no message queue for it to use. When Windows detects this
situation, it signals Fatal Exit 0x0019.
RESOLUTION
If the DLL must display a message during initialization, it must
either be explicitly loaded from the application using
LoadLibrary() or the DLL should export a function that can be
called from the WinMain() procedure of the application. By the time
WinMain() is executed, the window queue has been created.
More Information:
In Windows 3.0, a network driver is the only DLL that can create a
window during initialization. The network driver is loaded after the
first application task has been initialized (that is, the shell), and
any dialog box displayed by a network driver uses the message queue of
the shell application.