質問

常にアプリケーション内の他のウィンドウの上にとどまる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メインダイアログウィンドウを取得しますが、あなたはどこにも拘束するためにコードを書くことができます。 何の境界線または上部のバーを使用していないことは、それ簡単なウィンドウになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top