質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.37%

  • C

    2524questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    2409questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Windows

    1008questions

    Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Win32APIでダイアログボックス

解決済

回答 5

投稿 2017/11/22 16:43

  • 評価
  • クリップ 1
  • VIEW 121

fermat

score 47

■実現したい事
ソフトをインストールするときやごみ箱のファイルを大量に削除するときなどに
表示される待機中のダイアログボックスって、
「あと○○秒です」とか「あと○○GBです」などど表示されますが、
あの更新型?ダイアログボックス(正式名称もわかっていません)は
どうやって作ればいいのでしょうか・・・。
WIN32APIで作りたいと思っています。

メッセージが表示されてOKをクリックするだけのダイアログボックスなら作れるのですが、
表示がパソコンの状態によって変化するダイアログの作り方がわかりません。

説明が下手なのですが、何かご存知の方がいらっしゃいましたら
よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • t_obara

    2017/11/22 17:18

    基本的には、SHFileOperation を利用していると思います。ファイル操作を伴わない場合には他の方々が回答されている通りかと。

    キャンセル

  • fermat

    2017/11/22 18:14

    ファイル操作を前提とした、もともとのAPIに組み込まれている機能のようですね。SHFileOperationというキーワード勉強になります。

    キャンセル

回答 5

checkベストアンサー

0

COMベースですがIProgressDialogを利用すれば独自にダイアログ作成する手間が省けて少し楽できるかもしれません。
参考:IProgressDialogによるプログレスダイアログを使う

投稿 2017/11/22 17:23

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/22 18:19

    簡単にできるのではと思っていましたが、そうではないようですね(;´Д`)
    でも、参考のリンクを足掛かりになんとか組み立てられそうです。
    COMルートで攻略してみようと思います。ありがとうございます。

    キャンセル

0

APIにそういう便利なダイアログがあるか、といわれるとちょっと判りませんが(ざっと調べた範囲で見つかりませんでした)、私の場合はスレッドを使って自分で実装しています。

「ワーカースレッド」で検索してみるといろいろなサンプルが見つかると思います。
実装内容はそちらに任せて、ここでは簡単に考え方を書いておきます。

  1. ダイアログからワーカースレッドを起動
  2. ワーカースレッドで実行する関数に希望する処理(削除やコピー、時間のかかる処理)を記述
  3. スレッドで実行する関数内の切りのいいタイミング(1ファイル処理した、など)でダイアログにメッセージを投げる
  4. ダイアログでメッセージを受け取った際に、ダイアログ上の表示を少し変更する(ここの処理で、転送した容量の合計、アニメーション、プログレスバーなどを変更する)
  5. スレッドの関数を終了する際、正常終了、エラー終了等それぞれダイアログにメッセージを投げると、ダイアログ側で終了状態に応じた処理ができる。

基本的には上記の処理を実装すれば、希望されるダイアログにできると思います。スレッド処理は慣れるまでちょっと大変ですが、がんばってみてください。

投稿 2017/11/22 17:09

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/22 18:29

    ワーカースレッドって初めて耳にしました。
    少し検索したばかりですが、スレッド処理に圧倒されてしまいました。
    使いこなせれば便利そうなので、教えていただいた手順をもとに、勉強を続けていきたいと思います。
    ありがとうございます。

    キャンセル

0

「Win32 APIで」という意味が、APIコールにそういう便利な物があるのか?ということであればありません。(指定した時間で自動で消えてくれるメッセージボックスはありますが。)

なので、自力でダイアログボックスを表示することになります。まあ、自作すればほぼどんなことでもできるようになります。

投稿 2017/11/22 17:09

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/22 18:26

    APIにありそうな簡単な作りのように見えて、そうではないということが分かってきました。
    自作してみたいような、作れないような・・・と揺れてます。ヒントをありがとうございます。

    キャンセル

0

お求めのものは、おそらく、「プログレスバー」ではないかと思います。
「win32api プログレスバー」で検索したら、以下が参考になりそうです。

https://msdn.microsoft.com/en-us/library/windows/desktop/bb760816(v=vs.85).aspx
http://www.kumei.ne.jp/c_lang/sdk/sdk_72.htm

投稿 2017/11/22 17:11

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/22 18:22

    「プログレスバー」って名前なんですね。
    「ダイアログボックス」でネット検索かけたりして、無いな・・・違うんだよな・・・って
    困っていたので、助かりました。

    キャンセル

0

C++ ではないですが、考え方という点ではこちらが参考になるでしょうか。

ちなみにイメージされたもの(エクスプローラーなどでファイルコピーや移動したときのやつですよね)は、IFileOperation という API が(勝手に)出すものです。

投稿 2017/11/22 17:29

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/22 18:16

    そうです!それを作りたかったのですが、、、APIが勝手に出すものなんですねorz
    でも、仕組みを知ることができて良かったです。 ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.37%

関連した質問

同じタグがついた質問を見る

  • C

    2524questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    2409questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Windows

    1008questions

    Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。