目の前にある C++ ビルダー 2010 プロジェクトで奇妙なシナリオが発生しました。時々、モーダル フォームがメイン フォームの背後にあるように見えます。メインウィンドウがあり、メインウィンドウのボタンを使用してセカンダリウィンドウを開き、メインウィンドウでモーダルフォームポップアップを生成するボタンを選択すると、これが発生するようです。モーダル フォームはメイン ウィンドウの後ろに表示されるので、Esc キーを押して閉じます。
もう一度開くと、モーダル ウィンドウが一番上に表示され、目的の結果が得られます。
これが完了すると、メイン ウィンドウがすべてのウィンドウの前面に表示されるようになります。独自のモーダル ウィンドウや子ウィンドウだけでなく、Windows エクスプローラー ウィンドウやその他のプログラムも含まれます。更新: これは、モーダル ウィンドウがメイン ウィンドウの背後に配置され、エスケープを使用して閉じられるたびに発生します。メイン ウィンドウを正常に動作させる唯一の方法は、アプリケーションを再起動することです。
メイン ウィンドウと最初の問題であったモーダル ポップアップの両方のFormStyleおよびPopupModeプロパティをチェックしていじりました。しかし、それは役に立たないようです。メインウィンドウには
FormStyle: fsNormal
PopupMode: pmNone
メイン ウィンドウの動作がおかしくなるので、問題はメイン ウィンドウにあるように感じます。モーダル ウィンドウにメイン ウィンドウを親として使用するように具体的に指示し、 FormStyleとPopupModeのすべての設定と組み合わせを変更せずに試してみました。
これに加えて、これらすべてが Vista 以前でも機能していたと報告されています (はい、これは古くて大きなアプリケーションです... へへ)
更新:主な原因は、すべての上にあるメイン ウィンドウにあるようです。これにより、モーダル フォームがその後ろに表示され、何か問題があるように見えます。これは初回のみ発生し、モーダル フォームを再度開くとメイン ウィンドウの前に描画されます。メイン ウィンドウは、デスクトップ上の他のすべてのものより前に表示されますが。さらに混乱を招くのは、メイン ウィンドウがこのような動作を開始することを決定したとき、非常にランダムに感じられることです。