wie supermuckl bereits geschrieben hat, ist dein Problem die Message-Loop. GetMessage() liefert naemlich nur dann FALSE zurueck, wenn eine WM_QUIT message fuer den Thread geposted wurde. Der exe loader von windows laedt dein Programm, stellt fest dass es von gewissen DLLs abhaengt, laedt diese DLLs und ruft dort die DllMain() Funktion auf. Das
OS waert so lange bis die DllMain() fertig ist und laedt dann die naechste
DLL, bis es letztendlich die WinMain() Funktion deiner Applikation aufruft. Wenn du jetzt in einer DllMain() endlos code ausfuehrst, wird das Programm nie fertig geladen werden. Deshalb bietet es sich an, in der DllMain() lediglich einen Splash Thread zu erzeugen der dann so lange laeuft bis das Programm komplett geladen und initialisiert wurde. Dann einfach diesen Thread killen oder im Thread regelmaessig den Zustand des Programms abfragen und jeweils darauf reagieren.
Nur so als Anregung...