CDialog(MFC)からForm(.NET)をモードレス表示するとTABなどのキーが効かない
ふと、古いCDialogなアプリケーションから、別で作ったFormなアプリケーションを呼び出せたら便利だな、と言う事がありまして試してみた時にぶつかった問題。
まず、.NETのFormが呼び出せるように、CDialogの旧C++の環境をC++/CLIに移行。
そこから、FormをShowDialog(モーダル)なら別に問題ないのですが、Show(モードレス)で表示させるとなぜかTABキーなどが効かないと言う問題が発生。
キーイベントは起きているのにTABなどの標準動作が動かない、と言う状態です。
既知の問題として挙がっているかと思ったものの、調べ方が良くないのか詳しいことは分からず。。
とりあえずキーイベントは来ているのでFormでKeyPreviewを設定して、KeyDownイベントでモードレスの場合はそのキーが押されたときと同じ処理する、と言う力技しかないのか、、と思ったものの、結局面倒なのでFormを呼び出す案は取りやめました。笑
メッセージループの処理の仕方が違って、MFCなメッセージループで処理される場合はFormの処理が上手くできていないのかなぁと言う想像、、少し気になるところではあるので、何か情報がありましたら教えて頂きたいところです。