WM_GETDLGCODE無限ループ
IWebBrowserを乗っけたダイアログ上でTextFieldを含んだJavaAppletを開き、そのあたりをいじっているとメインスレッドがフリーズ。
なんだろうと思ってブレークをかけてみると、ダイアログの子要素に対してWM_GETDLGCODEがものすごい勢いで投げまくられている状態。
で、調査した。
WM_GETDLGCODEのなんたるか:
http://msdn.microsoft.com/ja-jp/library/ms645425
http://support.microsoft.com/kb/83302/en
タブコントロールを使っている場合に同じ状況に陥るケースが頻繁に報告されている。僕には関係ない。次。
http://blog.goo.ne.jp/satomi_takeo/e/b058ef705da6ca88ec87db660878c789
あたりっぽいんだが、リンク先サイトが死んでいて状況を追えず。次。
http://www.guyswithtowels.com/articles/2002-08-15-1600.html#ModelessDialogs
具体的なコードも出ていて助かる。が、メッセージポンプはMFC側にあるので、この通りに実装するの難しそう。