GetOpenFileNameがCDERR_INITIALIZATIONで落ちる – プログラミング – Home

通知
すべてクリア

[解決済] GetOpenFileNameがCDERR_INITIALIZATIONで落ちる


みずき
 みずき
(@みずき)
ゲスト
結合: 23年前
投稿: 1
Topic starter  

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;


引用未解決
トピックタグ
みずき
 みずき
(@みずき)
ゲスト
結合: 23年前
投稿: 3
 

さきほど質問の投稿をしましたが、重大な見落としをしていました。
それを解決した結果、ファイル選択画面がでるようになりました。

対策ですが、以下の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); /* ファイル名サイズ
以下同文


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました