GetOpenFileNameを用いてファイル名称を取得しようとしているのですが、
ダイアログが表示されません。
CommDlgExtendedErrorの結果はCDERR_INITIALIZATION(0x0002)
ということで下記HPをみて修正をしましたが、相変わらずCDERR_INITIALIZATION
で終了してしまいます。
参考HP
http://www.microsoft.com/JAPAN/support/kb/articles/JP222/0/03.asp
環境はwindows2000
VC++6.0にてコーディングしています。
**ソース*************
OPENFILENAME ofn
unsigned char szSendFile[256]
unsigned char ucMessage[256];
unsigned char ucMName[40];
int nRtn;
BOOL blget = FALSE;
strcpy(ucMName,DlgInFile); /* 関数名設定 */
memset(&ofn,0x00,sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME); /* ファイル構造体サイズ */
ofn.hwndOwner = NULL;
ofn.lpstrFile = szSendFile; /* 選択ファイル名格納 */
ofn.nMaxFile = sizeof(szSendFile); /* ファイル名サイズ */
ofn.lpstrFilter = テキスト(*.txt)\0*.txt\0すべて(*.*)\0*.*\0;
ofn.nFilterIndex = 1;
ofn.lpstrTitle = CSVファイル選択; /* タイトル */
ofn.lpstrInitialDir = NULL;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = NULL;
ofn.lCustData = 0;
ofn.lpfnHook = 0;
ofn.lpTemplateName = 0;
SetDlgItemText(hwnd,IDC_INFILENAME,ofn.lpstrTitle);
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
/* 既存パス指定・既存ファイル指定・読出しチェックボックスなし */
blget = GetOpenFileName(&ofn);
if(blget)
{
/* 指定ダイアログ名称をリストボックスに表示 */
if(cIOFlg == DLG_IN)
{
SetDlgItemText(hwnd,IDC_INFILENAME,ofn.lpstrFileTitle);
} else
if(cIOFlg == DLG_OUT){
SetDlgItemText(hwnd,IDC_OUTFILENAME,ofn.lpstrFileTitle);
}
nRtn = 0;
} else {
/* 障害メッセージの取得 */
/* CommDlgExtendedErrorの詳細番号はCDERR.Hを参照*/
sprintf(ucMessage,ODA200_MSG,ucMName,CommDlgExtendedError());
SendDlgItemMessage(hwnd, IDC_INFO, LB_ADDSTRING,
0, (LPARAM)ucMessage);
nRtn = 1;
}
return nRtn;
さきほど質問の投稿をしましたが、重大な見落としをしていました。
それを解決した結果、ファイル選択画面がでるようになりました。
対策ですが、以下の2行を追加しました。
よく確認をせずに投稿をしてしまい、大変申しわけありませんでした。m(_ _)m
********** ソース ***********
strcpy(ucMName,DlgInFile); /* 関数名設定 */
memset(&ofn,0x00,sizeof(OPENFILENAME));
/* S 追加 */
memset(szSendFile,0x20,sizeof(szSendFile));
szSendFile[0] = '\0';
/* E 追加 */
ofn.lStructSize = sizeof(OPENFILENAME); /* ファイル構造体サイズ */
ofn.hwndOwner = NULL;
ofn.lpstrFile = szSendFile; /* 選択ファイル名格納 */
ofn.nMaxFile = sizeof(szSendFile); /* ファイル名サイズ
以下同文