1

私はmingw、c ++を使用しています。次のような複数のファイルを開きたいです:

OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(ofn));

ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = "TXT\0"
        "*.txt\0";
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT;
ofn.lpstrDefExt = "txt";

しかし、どうすればファイル名を取得できますか? szFileName 変数を確認すると、フォルダー名のみが含まれています。

4

1 に答える 1

8

ドキュメントから:

ユーザーが複数のファイルを選択した場合、lpstrFileバッファーは現在のディレクトリへのパスと、その後に選択されたファイルのファイル名を返します。nFileOffsetメンバーは、最初のファイル名までのオフセット (バイトまたは文字単位) です。

ディレクトリとファイル名の文字列は NULL で区切られ、最後のファイル名の後に NULL 文字が追加されます。

あなたの質問から:

szFileName 変数を確認すると、フォルダー名のみが含まれています。

終端の'\0'.

次の文字が別のではないたびに'\0'、それが新しいファイル名の始まりです。

于 2013-03-28T15:33:58.167 に答える