私はメインウィンドウを持っているので、メインウィンドウに含まれるのではなく浮かせるように、アプリケーションのフレームを "ポップアップ"できます。ある時点で3つのWS_POPUPウィンドウがあるように、ポップアップできる複数のフレームがあります。モーダルダイアログを表示するときにトップレベルウィンドウ(WS_POPUP)を無効にする
問題は、私がモーダルダイアログを表示するときに、私はDoModal関数のパラメータを使ってそれらのうちの1つだけを無効にすることができます。 DoModalを使ってすべてのトップレベルウィンドウを無効にする方法はありますか?モーダルを表示する前に単にウィンドウを無効にしてから、それを元に戻すことはできません。複数のモーダルダイアログを連鎖させることができます(1つのモーダルダイアログが別のモーダルダイアログを開きます)。
APIはこのようなことを行う方法を提供しましたか?私は2時間のためにこれをgoogledし、十分な解決策を見つけることができません。私はMFC、WTL、およびATLの組み合わせを使用しています。
ありがとうございます!
これは、ダイアログの仕組みではありません。同様の効果を得るには、EnableWindow()を明示的に使用する必要があります。しかし、それはどのユーザーにとっても直感的ではありません。 –
@ジャンス:モーダルダイアログは所有者によって**所有されています**。子/親の関係はありません。モーダルダイアログは兄弟を無効にしません。他の所有ウインドウ。 – IInspectable
@HansPassantどの部分が直感的ではないと思いますか? 1つの現実世界の例は、ビジュアルスタジオです。ビジュアルスタジオは複数のポップアップウィンドウをサポートします。 VSでは、ファイルを開くときに、他のすべてのポップアップウィンドウは無効になります。とにかく、私は実装についてもっと心配しています。 – bysreg