はじめまして。
お世話になります。
開発環境:WindowsXP VC++6.0 MFC使用
ダイアログベースで画面を作成(A.exe CDialogベース)し、その画面でボタンを押下し
子画面(A_Child)を表示させます。表示方法はDoModal()で。
そのA_ChildはCDialogベースです。
A_Childダイアログが表示されている間(最前面)は、デスクトップ上の操作を
何も出来ない様にしたいのですが、方法はありますでしょうか?
(例:スタート→ログオフでダイアログが表示しますよね。
その時ってそのダイアログ以外は触れないですよね。)
せめて、自分たちが作成したアプリだけでも操作不可能にしたいのです。
SetWindowPos()、ModifyStyle()、色々試しましたが上手くいきません。
DoModalで表示させるのがそもそもまちがいののでしょうか?
何か方法が有りましたらよろしくお願いします。
説明が下手ですみません。
藤本さんへ
>A_Childダイアログが表示されている間(最前面)は、デスクトップ上の操作を
>何も出来ない様にしたいのですが、方法はありますでしょうか?
> (例:スタート→ログオフでダイアログが表示しますよね。
> その時ってそのダイアログ以外は触れないですよね。)
マウスとキーボードを両方ともグローバルフックすればできると思います。
SetWindowHookEx()を調べてみましょう。。
>自分たちが作成したアプリだけでも操作不可能にしたいのです
i ) マウスとキーボードを両方ともローカルフック(たぶんこっちのほうが簡単で
安全性は高いかと)
ii) すべてのコントロールのEnableをfalse にすればいけるかと(少し考えているの
とは違うかもしれないけど)
でも操作不可能にしたらどうやって復帰するのかな・・・・・??
http://m--takahashi.com/cgi.cgi?13927
> 発言される前に「使用上の注意」を必ずお読み下さい。
> ■ マルチポストについて
>
> マルチポストとは、「同じ内容の質問などを複数の掲示板等に書き込むこと」です。
> この行為はマナー違反として嫌われています。マルチポストは行わないで下さい。
>
>
> 誤ってマルチポストしてしまった場合には、必ず全ての掲示板にどのように
> 解決したかを記述し、かつお礼を書き込んで下さい。
タイトルバーのないウィンドウを画面いっぱいに作成して、最前面表示しておくとか。
直前に画面全体のスクリーンショットを取っておけば、ログオフダイアログっぽくなる
のではないでしょうか。
> せめて、自分たちが作成したアプリだけでも操作不可能にしたいのです。
DoModal() で表示したなら、A_Child 表示中は A は操作不可能になると
思うのですが、そうならないのでしょうか?
教えて!goo にも・・・
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2074165
藤本さん、よその掲示板にもまったく同じ質問をすることを
マルチポストといいます。
これは質問に答える側としてはかなり気分を害する行為なので、
やめたほうがいいですよ。
マナー違反をして大変申し訳ございませんでした。
以後、きおつけます。
すみませんでした。