C++ MFC でモードレスダイアログ ボックスを作成し、常にアプリケーションの他のウィンドウの上に表示する方法はありますか? 私は、Visual Studio 2005 の [検索] ダイアログのようなものを考えています。上部に表示されますが、下にあるテキストを編集することもできます。
(違いがある場合、それは MDI ではなく、ダイアログ ベースのアプリです)
C++ MFC でモードレスダイアログ ボックスを作成し、常にアプリケーションの他のウィンドウの上に表示する方法はありますか? 私は、Visual Studio 2005 の [検索] ダイアログのようなものを考えています。上部に表示されますが、下にあるテキストを編集することもできます。
(違いがある場合、それは MDI ではなく、ダイアログ ベースのアプリです)
注: これは Windows 10 では機能せず、Windows 7 および 8 では機能しない可能性があります (レポートは異なります)。
ニッシュより:
###ダイアログを最前面に表示する
「常にトップに留まる」オプションを備えたプログラムを見たことはありませんか? 信じられないことは、たった 1 行のコードでダイアログを最上位に表示できることです。ダイアログ クラスの OnInitDialog() 関数に次の行を追加するだけです。
SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
基本的に、SetWindowPos 関数を使用して、ダイアログ ウィンドウの Z オーダーを変更します。ダイアログを Z オーダーの一番上に移動することで、ダイアログが他のすべてのウィンドウの上に表示されるようにします。これで、他のウィンドウをアクティブにしても、私たちのウィンドウが一番上に表示されたままになります。ただし、これを行うときは、自分が何をしているのかを正確に把握することをお勧めします。なぜなら、そうしたいときにウィンドウを邪魔にならないようにできないと、人々を困らせる可能性があるからです。
コメントで述べたように、上記の行により、ウィンドウがすべてのアプリケーションの上に置かれます。あなたがする必要があります
SetWindowPos(&this->wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
アプリケーションのみの上にウィンドウを配置するには。