忍者ブログ
NINJA
[2] [3] [4] [5] [6] [7] [8] [9]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

選択したフォルダパスを取得する。


// 特定のフォルダを選択するコールバック
int __stdcall BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam,  LPARAM lpData)
{
    if( uMsg == BFFM_INITIALIZED ){

        SendMessage( hwnd, BFFM_SETSELECTION, TRUE, lpData );

    }
    return 0;
}


void xxxxxx::GetSelectFolderPath(CString& SelectFolderPath)
{
    BROWSEINFO        bInfo;
    LPITEMIDLIST    pIDList;
    TCHAR            szDisplayName[MAX_PATH];
   
    // BROWSEINFO構造体に値を設定

    // ダイアログの親ウインドウのハンドル
    bInfo.hwndOwner      = AfxGetMainWnd()->m_hWnd;

    // ルートフォルダを示すITEMIDLISTのポインタ (NULLの場合デスクトップフォルダが使われます)
    bInfo.pidlRoot            = NULL;

    // 選択されたフォルダ名を受け取るバッファのポインタ
    bInfo.pszDisplayName        = szDisplayName;

    // ツリービューの上部に表示される文字列
    bInfo.lpszTitle             = _T("フォルダの選択");

    // 表示されるフォルダの種類を示すフラグ
    bInfo.ulFlags               = BIF_RETURNONLYFSDIRS;

    // BrowseCallbackProc関数のポインタ
    // デフォルトのフォルダパスを指定する場合、
BrowseCallbackProc
    bInfo.lpfn                  = NULL;

   
// コールバック関数に渡す値
   // LPCTSTR文字列で、「デフォルトのフォルダパスを指定」
    bInfo.lParam                = (LPARAM)0;
   
    // フォルダ選択ダイアログを表示
    pIDList = ::SHBrowseForFolder(&bInfo);
    if(pIDList == NULL){

        // 戻り値がNULLの場合、フォルダが選択されずにダイアログが閉じられたことを意味します。
        SelectFolderPath = "";

    }else{
        // ItemIDListをパス名に変換します
        if(!::SHGetPathFromIDList(pIDList, szDisplayName)){
            // エラー処理
        }
        // szDisplayNameに選択されたフォルダのパスが入っています
        // 最後にpIDListのポイントしているメモリを開放します
        SelectFolderPath = szDisplayName;

        ::CoTaskMemFree( pIDList );
    }
}



PR
LPSTRをCStringに変換する。

void xxxxx::LpstrToString(LPSTR lpsz, CString& str)
{
    str.Format( _T("%s"), lpsz );
}

実行ファイル名のフォルダ名とファイル名を取得する。


void xxxxxx::GetModuleExeCution(CString &FolderName, CString &FileName)
{
    TCHAR szPath[_MAX_PATH];
    TCHAR szDir[_MAX_DIR];
    TCHAR szDrive[_MAX_PATH];
    TCHAR szFName[_MAX_FNAME];
    TCHAR szExt[_MAX_EXT];

    GetModuleFileNameW( NULL, szPath, MAX_PATH );

    _wsplitpath( szPath,szDrive, szDir, szFName, szExt );

    // フォルダ、ファイル名取得
    TCHAR szFilePath[_MAX_PATH];
    TCHAR szFileName[_MAX_PATH];

    wsprintfW( szFilePath, _T("%s%s"), szDrive, szDir );
    wsprintfW( szFileName, _T("%s%s"), szFName, szExt );

    FolderName    = szFilePath;
    FileName    = szFileName;

}

10進数を16進数に変換する。

CString xxxxxx::DecToHex( DWORD dwNum )
{
    CString str;

    str.Format( _T("%x"), dwNum );

    return str;
}

文字列を10進数の浮動小数点へ変換する。

double CUtils::StringToDexDouble(CString str)
{
    double dex = 0;
    _stscanf( str, _T("%lf"), &dex );
    return dex;
}

カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
フリーエリア
最新CM
最新TB
プロフィール
HN:
No Name Ninja
性別:
非公開
バーコード
ブログ内検索
アーカイブ
P R
Powered by ニンジャブログ  Designed by ゆきぱんだ
Copyright (c) Visual Studio C++のお勉強 All Rights Reserved
忍者ブログ / [PR]