ここにアマチュアプログラマー。今日の私の問題は、ダイアログボックスの編集ボックスに表示される.txtファイルを読み込もうとしていることです。ifstream getopenfilenameからファイル名を開かない
私がコードで始める前に、ファイルの場所を指定してgetopenfilenameから読み込みダイアログをバイパスして動作させることができます。しかし、私はgetopenfilenameからそのファイルの場所を取得、私はそれを動作させるように見えることはできません。
関連するコードは次のとおりです。
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hDlg;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn) == TRUE)
{
hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, LPSECURITY_ATTRIBUTES)NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, (HANDLE)NULL);
ifstream inFile(ofn.lpstrFile);
if (!inFile)
MessageBox(0, "CAN'T OPEN FILE", "ALERT", MB_OK | MB_ICONWARNING);
else
{
string text;
while(getline(inFile, text));
inFile.close();
MessageBox(0, text.c_str(), "msg", MB_OK);
SetWindowText(editbox, text.c_str());
}
CloseHandle(hf);
hf = INVALID_HANDLE_VALUE;
私は初心者ですが、私はこれを理解しようとしている私の脳と私のGoogleバーを障るされています。
fstream経由で開くことはありません。
なぜWin32 APiとC++標準ライブラリの両方を使ってファイルを開こうとしますか? –
_iは動作していないようです._そして、... **正確に**は問題ですか? –
元の問題とは別に、ファイルの読み方にもバグがあります。各 'getline()'コールが 'text'変数の内容を上書きするため、ファイルの最後の行だけが表示されます。 – zett42