GUI非表示のダイアログを表示させる方法 – プログラミング – Home

GUI非表示のダイアログを表示させる方...
 
通知
すべてクリア

GUI非表示のダイアログを表示させる方法


サトウ
 サトウ
(@サトウ)
ゲスト
結合: 17年前
投稿: 11
Topic starter  

ダイアログベースのアプリで、GUI非表示で起動したアプリを
あるタイミングで表示(メインダイアログ)したいのですが方法がわかりません。
ご教授おねがいできないでしょうか?

メインダイアログのOnInitDialog() 内で以下のメソッドでGUIの非表示を実装していま
す。
ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);
SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_HIDEWINDOW);
これを、あるタイミングでGUI表示させたいのですが方法が方法がわかりません。

詳細を簡単に書くと、
常駐アプリ(タスクトレイ常駐)が定期的に上記のexeを呼びます。
exeは簡単なファイルスキャンを行います。
設定によっては、GUI表示でスキャンを実行するのですが、別設定でスキャン実行時は
GUI非表示(サイレントモード)で動作し、スキャン結果のみを上記のようにGUI表示を行
いたいと思っています。

よろしくお願いいたします。


引用解決済
トピックタグ
サトウ
 サトウ
(@サトウ)
ゲスト
結合: 17年前
投稿: 11
Topic starter  

申し訳ありません。開発環境を記述を忘れました。
VisualStudio2008
MFCでダイアログベースのアプリになります。


返信引用
ロマ
 ロマ
(@ロマ)
ゲスト
結合: 18年前
投稿: 170
 

非表示状態ということですが、本当に非表示になっていますか。
> SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_HIDEWINDOW);
これだと、サイズもゼロになっているようですが。

Win32APIだと、WM_INITDIALOGで非表示にはできないはずですが、
MFCには詳しくないのでよく分かりません。
Spy++でWS_VISIBLEが付いていないかどうか観察してみてください。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

>> SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_HIDEWINDOW);
>これだと、サイズもゼロになっているようですが。
ShowWindows(SW_HIDE);
ですよね。

> Win32APIだと、WM_INITDIALOGで非表示にはできないはずですが、
> MFCには詳しくないのでよく分かりません。
同じですね。
僕の場合、OnTimer内でフラグを使ってトグルで表示/非表示させますね。


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

> これを、あるタイミングでGUI表示させたいのですが方法が方法がわかりません。
わからないのはタイミングですか? 表示させる方法です?

表示させる方法ならばITOさんが書いている通りShowWindows関数でしょう。

タイミングならば、
> 常駐アプリ(タスクトレイ常駐)が定期的に上記のexeを呼びます。
「呼ぶ」という操作が何をやっているか不明ですが、他のアプリケーションに通知する
ならば PostMessage を使用することになるのではないでしょうか。
つまり常駐側が必要に応じてPostMessageを発行して、表示側のアプリでそのメッセージ
のハンドラでShowWindows(SW_SHOW)としてあげればいいと思います。

PostMessageで送るメッセージIDはシステム内でユニークである必要があるので、
RegisterWindowMessage関数を使用して決定する必要があります。


返信引用
かもねぎ
 かもねぎ
(@かもねぎ)
ゲスト
結合: 17年前
投稿: 61
 

スキャンが完了したら
WM_APP にメッセージ送って
そこでダイアログ表示はどうでしょう?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました