進行状況表示のウィンドウ

このQ&Aのポイント
  • ソフト内で時間のかかる処理を行う際に、進行状況を表示するウィンドウの作成方法について質問します。
  • ダイアログボックスを作成して進行状況を表示する方法と、ウィンドウクラスを登録してウィンドウを作る方法がありますが、どちらが適しているでしょうか?
  • 作成するウィンドウはモーダルなもので、進行状況の%表示とキャンセルボタンを持つ予定です。
回答を見る
  • ベストアンサー

進行状況表示のウィンドウ

進行状況表示のウィンドウ ソフトの中である程度時間のかかる処理をしている間、ソフトが固まったように見えるのを防ぐために、進行状況を表示する小さなダイアログボックスを作ろうと思いました。 そして、新しいウィンドウを作る方法は、ダイアログのリソースを作っておいてDialogBox()関数でそれを呼び出すか、ウィンドウクラスを登録してCreateWindow()関数でウィンドウを作る方法と二通りあると思いますが、どちらが向いていますか?? 作るウィンドウには進行状況の%表示とキャンセルボタンを作るだけのモーダルなもので、「時間のかかる処理」は_beginthreadex()関数で別スレッドを立てて行う予定です。 環境は、Visual C++ 2008 のWin32アプリです。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

モーダルなダイアログでいいと思いますよ ワーカースレッドと ダイアログのスレッド間でやり取りするメッセージをRegisterWindowMessageなどで共通のメッセージを決めておく必要があるでしょう モーダルダイアログ中のWndProc(または DialogProc)でその共通メッセージを処理して 進捗状況の表示を更新してやればいいでしょう

ho6432
質問者

お礼

RegisterWindowMessageなんていうものがあったんですね。 タイマーか何かで定期的に更新しようかと思いましたが、早速使ってみようと思います、どうもありがとうございます。

関連するQ&A

  • vc++2008の進行状況ダイアログ表示に関して

    現在VC++2008にて開発を行っております、C++初心者の者です。 モーダルダイアログを表示し、 そのダイアログの値を利用・表示した進行状況ダイアログを表示したいと考えています。 ・進行状況ダイアログに表示する値  現在作成ファイル数 / 総制作ファイル数  (プログレスバーの表示は考えていません。) ・現在、進行状況ダイアログはモーダレスダイアログを表示し、表示している値をforループ内で変更するような処理にしていますが、ダイアログには何も表示していません。 どのような処理にすればよろしいでしょうか。 宜しくお願いします。

  • Accessフォームに進行状況ダイアログを表示したい

    Access2000を使用しています。 DAOでデータ引き当て処理を行なっている最中、進行状況ダイアログ を表示すれば時間の目安が付きやすいと思うのですが、やり方が分か りません。Accessでフォームに表示するのは難しいのでしょうか? ご存知の方、方法もふくめて宜しくお願いいたします。

  • サーバー側の処理の進行状況を表示させる方法について

    どこで質問するべきか迷ったのですがここで質問させていただきます。 はじめて簡単なWebサービスを作っています。作っていて疑問に思ったのことがあったので質問します。 よくWebサービスでユーザーのアクションに対して「保存中です」や「処理中です」のダイアログ等で知らせたり、またその時にプログレスバーなどで処理の進行状況など表示してくれる場合もあると思います。 その実現方法についてどんな方法があるのかという質問です。 サーバー上でphpのプログラムを動かすという前提で考えています。 Ajaxで結果をそのページに表示させるという場合で考えてみました。 私が思いつく方法はユーザーのアクションがあった時に「処理中です」等のダイアログを表示させてjQueryでサーバーのphpを呼び出し、処理が終ったらダイアログを閉じて、結果を表示させるという方法です。 初歩的なことであれですが、そもそもphpの処理が終るのが長い時、jQueryはphpの処理がちゃんと終わってから結果を受け取るのでしょうか? 問題はどうやってphpの進行状態をどうやって受け取るかということだと思うのですが、この実現方法は可能で正しいですか? また、進行状況を表示(現在何%くらいの処理なのか等)プログレスバーで表示させる場合の実現方法が思いつきませんでした。 こちらも呼び出したphpの状況をどうやって受け取るかということだと思うのですが、phpが処理の途中で別ファイルに状況を書き出してそれを一定間隔でjavaScriptが調べにアクセスするとかですか?確実に違うと思いますが。 わかる方回答よろしくお願いします。

  • vegas 18 進行状況ダイアログに関して

    VEGAS Pro 18.0 OS:windows11 レンダリング時に表示される進行状況ダイアログが表示されなくなりました。 つい先ほどまで表示されていましたが、なんの拍子にか突然表示されなくなり、その後パソコンの再起動、キャッシュの消去、ProgramDataにあるvegas関連のファイルの削除と本体の再インストールなどは試しましたが、解決には至りませんでした。 補足:進行状況ダイアログが表示されていなくてもレンダリング自体は正常に行われているようで、タイムライン左下の進行状況バーとプレビュー画面は進行状況に応じて動いていること、また仕上がった動画も再生可能で編集通りの仕上がりになっていることは確認済み 直前にソフトのフリーズへの対処としてタスクマネージャーからタスクの終了をしたりしましたが、それ自体は普段も頻繁にしているようなことで、これまでこのような状態になったことはありません。 誤操作で進行状況ダイアログが非表示化されてしまっているのかとも思いましたが、設定を見てみたりヘルプで検索してみたりしてもレンダリング開始時からの進行状況ダイアログの表示/非表示の項目は見つけられませんでした。 助言いただけると助かります。 ※OKWAVEより補足:「ソースネクスト株式会社の製品・サービス」についての質問です。

  • ExcelVBA 進行状況ダイアログ

    VISTA Excel2007です。 ある作業のVBAを作成して動かしています。 結構時間が掛るので進行状況をダイアログで表示をしたいのですがどうすればいいのかお教えください。

  • デフラグ中の進行状況表示

    Vistaでデフラグを実行中に進行状況が表示されません。多分、Vistaではデフォルト設定されていないからだと思いますが、敢て、進行状況を表示させる方法があれば教えて下さい。 宜しくお願い致します。

  • Accessで進行状況インジケーターの表示だけ止めたい

    Accessで進行状況インジケーターの表示だけ止めたい VBAで、Syscmdなどの命令を使って、左下のインジケーター部に 進行状況を表示していますが、マクロ動作により、次のクエリが 動いているときには「クエリを実行しています■■」のような 表示になってしまいます。 Syscmdコマンドを使用した直後に、インジケータ部の表示だけ ロックして、次のメッセージを表示させたい時点でリフレッシュ するようなことは可能でしょうか。 Application.Echo falseは試してみましたが、ウィンドゥ内の 表示がロックするだけで、インジケーターはうまくロックしない ようでした。(ステップ実行で確認。) 対処方法をご存知の方、ご教示よろしくお願いいたします。

  • IDEを使わないウインドウプログラム

    VC++を使ってウインドウを作成すると、勝手にクラスが作られてしまいますが、クラスを使わずにウインドウを表示したいです。 CreateWindowで一つ一つコントロールを配置していくか、リソーススクリプトファイルを手書きする手法があるらしいですが、どちらの方法でも出来上がるものは同じでしょうか?

  • Windows7でファイル移動の進行状況

    今までXP使っていましたが7にOSを変えました。 XPだと他のHDDからファイル移動するとき終了まで残り何時間とかファイル何個中何個移動とか移動の進行状況がわかりやすかったのですが7だと進行状況がわかりにくいです。 わかりやすくする方法ありますか?

  • Windows7 ファイル検索時の進行状況バー表示

    Windows7です。エクスプローラでファイル検索をする時に、以前はアドレスバーのところに検索の進行状況のバーが表示されていたのですが、何か設定をいじってから表示されなくなってしまいました。どこを直せば元通りになりますか?

専門家に質問してみよう