GetOpenFileName

  ファイルを選択してパスを取得する




  上記処理を Win32 Application で実装



OPENFILENAME 構造体の詳細については、自分で調べてみて下さい
( MSDN Japan ではみつけられませんでした )

  
#include <commdlg.h>
LRESULT CALLBACK About( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
	OPENFILENAME ofn;
	char szBuffer[512];
	char szFilter[512];
	char szTitle[512];
	char *pszWork;

	switch( message ) {
		case WM_INITDIALOG:
				return TRUE;

		case WM_COMMAND:
			if( LOWORD(wParam) == IDC_BUTTON1 ) {
				// メモリの初期化
				ZeroMemory( &ofn, sizeof( ofn ) );
				ZeroMemory( szBuffer, sizeof( szBuffer ) );
				ZeroMemory( szFilter, sizeof( szFilter ) );

				// 環境
				ofn.lStructSize = sizeof(ofn);
				ofn.hwndOwner = hDlg;
				ofn.hInstance = hInst;

				// フィルタの設定
				pszWork = szFilter; 
				lstrcpy( pszWork, "全て" );
				pszWork += lstrlen("全て")+1;
				lstrcpy( pszWork, "*.*" );
				pszWork += lstrlen("*.*")+1;
				lstrcpy( pszWork, "Office" );
				pszWork += lstrlen("Office")+1;
				lstrcpy( pszWork, "*.xls;*.mdb" );
				ofn.lpstrFilter = szFilter;
				ofn.nFilterIndex = 1;

				// ファイルのパスが格納されるバッファ
				szBuffer[0] = 0x00;
				ofn.lpstrFile = szBuffer;
				ofn.nMaxFile = sizeof(szBuffer);

				// タイトル
				lstrcpy( szTitle, "ファイルのパスの取得" ); 
				ofn.lpstrTitle = szTitle;

				// オプションフラグ
				ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;

				// API 関数の呼び出し
				BOOL ret;
				ret = GetOpenFileName( &ofn );
				if ( ret ) {
					SetDlgItemText( hDlg, IDC_EDIT1, szBuffer );
				}
				return FALSE;
			}
			if( LOWORD(wParam) == IDOK ||
				LOWORD(wParam) == IDCANCEL ) {
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
	}
	return FALSE;
}
  



  フィルタの設定方法

上記方法をもっと解りやすくすると以下のようになります

  
pszWork = "全て\0*.*\0Office\0*.xls;*.mdb\0\0";
ofn.lpstrFilter = pszWork;
ofn.nFilterIndex = 1;
  

要するに、メモリは以下のような構造になる必要があります

全て \0 *.* \0 Office \0 *.xls;*.mdb \0 \0

※ _mbstok の結果と同じです



  OPENFILENAME 構造体

  
typedef struct tagOFNA {
	DWORD		lStructSize;
	HWND		hwndOwner;
	HINSTANCE	hInstance;
	LPCSTR		lpstrFilter;
	LPSTR		lpstrCustomFilter;
	DWORD		nMaxCustFilter;
	DWORD		nFilterIndex;
	LPSTR		lpstrFile;
	DWORD		nMaxFile;
	LPSTR		lpstrFileTitle;
	DWORD		nMaxFileTitle;
	LPCSTR		lpstrInitialDir;
	LPCSTR		lpstrTitle;
	DWORD		Flags;
	WORD		nFileOffset;
	WORD		nFileExtension;
	LPCSTR		lpstrDefExt;
	LPARAM		lCustData;
	LPOFNHOOKPROC	lpfnHook;
	LPCSTR		lpTemplateName;
} OPENFILENAME;
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ