|
#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;
}
| |