さて、これは某タイピングソフトのソースコードの一部なわけですが、
これを見て、何か気づくでしょうか。特に、case 11000:の後ろのあたり。
まず、switch(msg)で、ウィンドウメッセージの振り分けを行います。
次に、case WM_COMMANDに来て、さらにここでswitch(LOWORD(wp))で振り分けを行い、
case 11000でコマンドを実行しているわけです。
で、問題はこのcase文の最後の部分で、まず、breakされます。
さて、その次に実行されるのはどこの行でしょうか?
そう、その次に実行されるのは、その下のほうにあるPostQuitMessage(0)
本来なら、breakの後に}を入れて、さらに、その後の行にbreakを入れないと、
この関数まで実行されるわけです。
この間違えに気づくのにどれだけかかったことか。。。
もうね、自分があふぉかと思いましたよ。
しかも、この問題の争点が、違うプロシージャに移行したときに、
何かが起きてると勘違いをして、根本的に仕組みを
変えたものもすでに実装しちゃってたりします。
なんかなぁ、憂鬱だ、、、