いつもお世話になっております。hgです。
ダイアログ画面を複数表示している中で、ある特定のダイアログ画面を表示させる際に、
常時前面に表示させたく、以下のようにダイアログのプログラムを記述したのですが、
前方に出ない場合があります。
void CXXXDlg::OnShowWindow(BOOL bShow, UINT nStatus){
:
SetWindowPos( &wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE );
:
}
常時、前方に表示させるようにするにはどのようにしたらいいか、知っている方がいました
ら、ご教授いただけたら幸いです。宜しくお願いいたします。
開発環境:
WinDows 2000:Vs C++ 6.0(SP 4)
他のウィンドウにもwndTopMost属性が付いていたら、
それが手前に出てしまうのと止めることはできないと思います。
#もし、もっと強力な「常に全てのウィンドウより手前に出る機能」という
#機能があったとしても、他のアプリケーションがその機能を使ってしまえば…
自分のダイアログで、ほかのウインドウへのメッセージをフックして、
その他のウインドウをアクティブにするメッセージであればその後自分のダイアログを最前面に
出すとか?
基本的な質問をして申しわけありませんが、自分のダイアログ画面の属性をwndTopMostとし、
それ以外のダイアログについてwndTopMostを設定していなかった場合、自分のダイアログ画面
が開いている状態で他のダイアログ画面を開こうとした場合、強制的に自分のダイアログ画面が
上にくるんですか?
>自分のダイアログ画面の属性をwndTopMostとし、
>それ以外のダイアログについてwndTopMostを設定していなかった場合、
>自分のダイアログ画面が開いている状態で他のダイアログ画面を開こう
>とした場合、強制的に自分のダイアログ画面が上にくるんですか?
そうです。
しかし、他のダイアログが自分のダイアログの
子ウィンドウである場合は、他のダイアログが上に出ます。
レス遅れてすいません。
常時前面に表示するダイアログ画面(一画面)については、属性をwndTopMostに設定し、
その他複数の画面については、属性をwndTopに設定することにより、問題が解決しまし
た。
アドバイスをして下さった皆様、どうもありがとうございました。