...
Eso es de no gestionar bien los mensajes de salida. Te refieres a que se ve que el proceso sigue activo no?
Supongo que en la funcion que gestionas los mensajes tienes un switch() para controlar los eventos... pues ponle esto:
case WM_DESTROY:
PostQuitMessage(0);
return 0;
Y cuentanos si te funciona.
Saludos.
...
Mejor que eso...en WM_CLOSE pon
PostQuitMessage(0);
return 0;
...