俺の経験ではコードが変なときがあったなぁ。
case :break;のbreakが抜けてるとかない?
case WM_COMMAND:
....
....
....←ここのbreak;がぬけてんの。
case WM_CLOSE:
break;

なまじ動いちゃうからたちわりーんだよな