プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

便利C++のドライブ関連クラス

2014年04月05日 19時40分03秒 | 便利ライブラリ関数

ここは、普段自分専用に使ってるC++のクラス・ライブラリです。
メンバ関数(メンバ変数も含む)は public 属性と protected 属性のみを公開し private 属性は記述してません。
また、この普段自分専用に使ってるC++のクラス・ライブラリは、現在ソースを公開してません。(戻る)

  1. ドライブ検索のクラス (oemDriveFind)
  2. ドライブ転送のクラス (oemDriveSend)
  3. ドライブ管理のクラス (oemDriveMgr)

ドライブ検索のクラス - oemDriveFind.h

// 検索用のコールバック関数型
typedef BOOL (CALLBACK*LPOEMDRIVE_FIND)(
    LPWIN32_FIND_DATA   fdFile,                 // ファイル情報
    LPTSTR              lpPath,                 // フルパス名
    LPTSTR              lpFile,                 // ファイル位置
    UINT                eReason,                // 呼び出された理由
    LPVOID              lpData                  // 渡されるデータ値
);

// 列挙定数(呼び出し理由)
enum eOEMDRVFND {
    OEMDRVFND_BEGIN,        // 検索開始
    OEMDRVFND_LOOP,         // 検索処理
    OEMDRVFND_END,          // 検索終了
    
    OEMDRVFND_FILE,         // ファイル処理
    OEMDRVFND_DIRTOP,       // フォルダ処理前
    OEMDRVFND_DIREND,       // フォルダ処理後
    MAX_OEMDRVFND,
};

class oemDriveFind {
public:
    // コンストラクタ
    oemDriveFind( LONG nDeepMax=-1 );
    // 操作関数
    LONG getDeepMax();
    LONG setDeepMax( LONG nDeepMax );
    // 検索関数
    BOOL run( LPCTSTR lpPath, LPCTSTR lpWild=NULL, LPBOOL lpCancel=NULL, LPOEMDRIVE_FIND fnFunc=NULL, LPVOID lpData=NULL );
};

ドライブ転送のクラス - oemDriveSend.h

// 転送用のコールバック関数型
typedef BOOL (CALLBACK*LPOEMDRIVE_SEND)(
    LPWIN32_FIND_DATA   fdFile,                 // ファイル情報
    LPTSTR              lpFindPath,             // 転送元ファイル
    LPTSTR              lpSendPath,             // 転送先ファイル
    UINT                eReason,                // 呼び出された理由
    LPVOID              lpData                  // 渡されるデータ値
);

// 列挙定数(呼び出し理由)
enum eOEMDRVSND {
    OEMDRVSND_BEGIN,        // 転送開始
    OEMDRVSND_LOOP,         // 転送処理
    OEMDRVSND_END,          // 転送終了
    
    OEMDRVSND_FILE,         // ファイル処理
    OEMDRVSND_DIRTOP,       // フォルダ処理前
    OEMDRVSND_DIREND,       // フォルダ処理後
    MAX_OEMDRVSND,
};

class oemDriveSend {
public:
    // コンストラクタ
    oemDriveSend( LONG nDeepMax=-1 );
    // 操作関数
    LONG getDeepMax();
    LONG setDeepMax( LONG nDeepMax );
    // 転送関数
    BOOL run( LPCTSTR lpFindPath, LPCTSTR lpSendPath, LPCTSTR lpWild=NULL, LPBOOL lpCancel=NULL, LPOEMDRIVE_SEND fnFunc=NULL, LPVOID lpData=NULL );
};

ドライブ管理のクラス - oemDriveMgr.h

// 管理用のコールバック関数型
typedef BOOL (CALLBACK*LPOEMDRIVE_MGR)(
    LPWIN32_FIND_DATA   fdFile,                 // ファイル情報
    LPTSTR              lpFindPath,             // 転送元ファイル(フルパス名)
    LPTSTR              lpSendPath,             // 転送先ファイル(ファイル位置)
    UINT                eReason,                // 呼び出された理由
    LPVOID              lpData                  // 渡されるデータ値
);

// 列挙定数(呼び出し理由)
enum eOEMDRVMGR {
    OEMDRVMGR_INIT,         // ドライブ管理の初期化
    OEMDRVMGR_TERM,         // ドライブ管理の後始末
    
    OEMDRVMGR_FINDINIT,     // ドライブ検索の初期化
    OEMDRVMGR_FINDTERM,     // ドライブ検索の後始末
    OEMDRVMGR_FINDDIRTOP,   // ドライブ検索のフォルダ処理前
    OEMDRVMGR_FINDDIREND,   // ドライブ検索のフォルダ処理後
    OEMDRVMGR_FINDFILE,     // ドライブ検索のファイル処理
    OEMDRVMGR_FINDLOOP,     // ドライブ検索のループ処理中
    
    OEMDRVMGR_SENDINIT,     // ドライブ転送の初期化
    OEMDRVMGR_SENDTERM,     // ドライブ転送の後始末
    OEMDRVMGR_SENDDIRTOP,   // ドライブ転送のフォルダ処理前
    OEMDRVMGR_SENDDIREND,   // ドライブ転送のフォルダ処理後
    OEMDRVMGR_SENDFILE,     // ドライブ転送のファイル処理
    OEMDRVMGR_SENDLOOP,     // ドライブ転送のループ処理中
    MAX_OEMDRVMGR,
};

// 列挙定数(動作モード)
enum eOEMDRVACT {
    OEMDRVACT_STOP,         // 停止中
    OEMDRVACT_START,        // 実行中
    OEMDRVACT_PAUSE,        // 一時停止中
    OEMDRVACT_CANCEL,       // キャンセル
    MAX_OEMDRVACT,
};

class oemDriveMgr {
protected:
    HWND                m_hDlg;                 // ダイアログのハンドル
    BOOL                m_bCancel;              // 管理処理のキャンセル値
    UINT                m_nDeepMax;             // 検索階層のフォルダ最大数
    // 処理状況
    UINT                m_nDir;                 // 処理状況のフォルダ処理数
    UINT                m_nDirMax;              // 処理状況のフォルダ最大数
    UINT                m_nFile;                // 処理状況のファイル処理数
    UINT                m_nFileMax;             // 処理状況のファイル最大数
    // 単体処理
    ULONGLONG           m_u64FileByte;          // 単体処理のファイル転送量
    ULONGLONG           m_u64FileSize;          // 単体処理のファイル全体量
    ULONGLONG           m_u64FileTime;          // 単体処理の転送開始時間(時分秒)
    SYSTEMTIME          m_stFileTime;           // 全体処理の転送開始時刻(ms)
    // 全体処理
    ULONGLONG           m_u64TotalByte;         // 全体処理のファイル転送量
    ULONGLONG           m_u64TotalSize;         // 全体処理のファイル全体量
    ULONGLONG           m_u64TotalTime;         // 全体処理の転送開始時間(時分秒)
    SYSTEMTIME          m_stTotalTime;          // 全体処理の転送開始時刻(ms)
public:
    // コンストラクタ
    oemDriveMgr( HWND hWnd=NULL, LONG nDeepMax=-1 );
    // 操作関数
    HWND getWnd();
    HWND setWnd( HWND hWnd );
    // 階層関数
    LONG getDeepMax();
    LONG setDeepMax( LONG nDeepMax );
protected:
    // 実行関数
    BOOL run( LPCTSTR lpFindPath, LPCTSTR lpSendPath, LPCTSTR lpWild=NULL, LPUINT lpAction=NULL, LPOEMDRIVE_MGR fnFunc=NULL, LPVOID lpData=NULL );
    // 下請け関数
    VOID setMarquee( HWND hCtrl, BOOL bEnable, UINT ms );
    VOID setProgress( HWND hCtrl, UINT nMin, UINT nMax, UINT nStep, UINT nPos );
    VOID pompMessage();
    VOID pauseMessage();
};

関連記事

  • 便利C++のログ保存クラス
  • 便利C++の日付と時間クラス
  • 便利C++のドライブ関連クラス
  • 便利C++のアイコン関連クラス
  • 便利C++のメニュー関連クラス
  • 便利C++のファイル関連クラス
  • 便利C++の文字列関連クラス
  • 便利C++のキーボード関連クラス

  • コメント    この記事についてブログを書く
    • X
    • Facebookでシェアする
    • はてなブックマークに追加する
    • LINEでシェアする
    « 便利C++の日付と時間クラス | トップ | 便利C++のアイコン関連クラス »
    最新の画像もっと見る

    コメントを投稿

    便利ライブラリ関数」カテゴリの最新記事