Habs gerade nochmal getestet... das mit dem ShowWindow ist auch unnötig, wenn man WS_VISIBLE als Style übergibt.
Was das mit dem DefWindowProc angeht, so ist es wichtig, dass alle Nachrichten bearbeitet werden. Welche Nachricht(en) jetzt genau dafür gesorgt hat/haben weiß ich nicht, jedoch sollte man DefWindowProc immer aufrufen, wenn man nachrichten nicht selber behandelt, damit man sicherstellen kann, dass auch diese behandelt werden.

In deinem Code steht ja auch in Zeile 148:
break; // DefWindowProc is called
Hätte ja im Grunde ein Hinweis sein können, dass am Ende der Funktion irgendwie DefWindowProc aufgerufen werden müsste; dies war jedoch nicht der Fall.