常にインフロントダイアログ
-
09-09-2019 - |
質問
常にアプリケーション内の他のウィンドウの上にとどまるC ++ MFCでのモードレスのダイアログボックスを作成する方法はありますか?私は一種のVisual Studio 2005で検索ダイアログのように考えています - 。それが上に残りますが、あなたはまだ根本的なテキストを編集することができます。
(それはどんな違いをした場合、それはMDIではありません。それは、ダイアログベースのアプリです)
解決
からニッシュするます:
あなたがコメントで述べたように、トップ
にご滞在のダイアログを作りますあなたが持っているプログラムを見ていません 「常時滞在・オン・トップ」のオプション?良く 信じられない事は、あなたができることです ただでトップにあなたのダイアログ滞在を作ります 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);
ウィンドウは、あなたのアプリケーションの上に座るようにするには。
-Adam
他のヒント
受け入れ答えは、上記のWindows 7またはのために失敗しました。 (それとも私の) しかし、その代わりに子供のポップアップとしてモードレスダイアログを作ることは、それを解決します。 それは今に配置WRTメインダイアログウィンドウを取得しますが、あなたはどこにも拘束するためにコードを書くことができます。 何の境界線または上部のバーを使用していないことは、それ簡単なウィンドウになります。