Skip to content

asura/progress_dialog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

プログレスダイアログの実装

キャンセル可能な処理と、それを呼び出し、進行中にはプログレスバーを表示するクラス群を定義します。

制約事項

  • VS2013で作成したプロジェクトです。
  • C++-11の非同期処理機能 (std::async, std::future) を使っています。
  • 処理完了後にプログレスダイアログを閉じさせるために、独自のメッセージ(WM_CLOSE_PROGRESS_DIALOG)を定義しています → stdafx.h

設計

  • クラス図・シーケンス図
  • コンセプト実装部分 (流用するもの)
    • ICancelable
    • CancelableProcessBase
    • CProgressDialog
  • サンプル実装部分 (捨てて良いもの)
    • ConcreteProcess
    • CProgressDialogDlg
    • CProgressDialogApp

利用方法

  1. CancelableProcessBaseから派生させた処理クラスを定義する
  2. 上記派生クラスのDoImpl()メソッドを実装する (適宜ShouldCancel()を使い、UI側からキャンセル要求が来ていないか確認すること)
  3. 処理させたいタイミングで、上記クラスのインスタンスを生成する
  4. CProgressDialogクラスのインスタンスを生成する (コンストラクタに、上記インスタンスを渡す)
  5. DoModal()する
  6. DoModal()の戻り値がIDOKかどうかにより、正常終了 or 異常終了に対応した後処理を実行する

参考にしたサイト

About

プログレスダイアログの実装

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published