プロパティページの中に別のプロパティシートがあるようなダイアログを作っていたのですが。
Dialog + Property Sheet S1 + Property Page P1A + Property Sheet S2 + Property Page P2A + Control + Property Page P1B ...
Controlにフォーカスがある状態で,P1Bのタブをクリックすると,アプリケーションが無限ループに入ってしまいました。
デバッグしてみると,P1AがしきりにWM_GETDLGCODEという見慣れないメッセージを子ウィンドウに投げまくっていました。そこでこのメッセージについてぐぐってみたところ,[wx-dev] Endless WM_GETDLGCODE loopなるページが見つかりました。それによると,コントロールがフォーカスを持っているときに,その親の親(またはさらにそのずっと親)が非表示になることが無限ループの発生条件だそうです。ふーむ。
それについて言及しているMicrosoftのドキュメントを探したのですが見つからず。結局P1AのOnShowWindow()関数内で,「自分の子供がフォーカスを持っていたら自分自身に移す」という処理を書いて事なきを得ました。