MFCでテキストファイルを読み込む

test88_01.gif
ここではMFCを利用して簡単にテキストファイルを読み込む。
「ファイル」メニューの「新規作成」から「プロジェクト」を選択し、現れたウインドウで「MFCアプリケーション」を使う。


test88_02.gif
MFCアプリケーションウイザードが開いたら「アプリケーションの種類」から「ダイアログベース」を選択する。


test88_03.gif
これでプロジェクトが生成された。
次にダイアログにボタンを配置するため「表示」メニューから「リソースビュー」を選択する。


test88_04.gif
左側にリソースビューが開いたら「Dialog」にあるメインウインドウ用のフォームを開く。


test88_05.gif
そしてボタンを配置するためツールボックスの「Button」をフォームへドラッグアンドドロップする。


test88_06.gif
これでボタンが配置された。次にボタンを押したときの動作を実装するため、ボタンをダブルクリックする。


test88_07.gif
すると自動的にメッセージハンドラなどが作成されると同時にソースコードの該当部分が開く。

test88_08.gif ここにボタンを押したときのソースコードを入力する。
ここではCStdioFileを利用してファイルを開き、1行ずつCStringへ読み込み、最後にAfxMessageBoxにてメッセージボックスへ表示している。
	BOOL		ret;
	CString		strLine;
	CString		strMessage;
	CStdioFile	cFile;

	ret = cFile.Open(_T("stdafx.h"),CFile::modeRead | CFile::shareDenyNone);
	if(ret == FALSE)
		return;

	while(ret)
	{
		ret = cFile.ReadString(strLine);
		strMessage += strLine;
		strMessage += _T("\n");
	}

	cFile.Close();

	AfxMessageBox(strMessage);

test88_09.gif
そして実行する。


test88_10.gif
ボタンを押すとファイルが読み込まれ、ファイル内容がメッセージボックスとして表示される。しかしここでは日本語部分が完全に文字化けしてしまった。

これはMFCアプリケーションウイザードではデフォルトでユニコードビルドとなっているためと、MFCのバグ(設計ミス)からCStdioFile::ReadStringAのようなメンバー関数が用意されていないためだ。


test88_11.gif
この場合、簡単に文字化けを直すには非ユニコードビルドにする。設定するにはまず「プロジェクト」メニューから「プロパティ」を選択する。

test88_12.gif
そして開いたウインドウの文字セットを「マルチバイト文字セットを使用する」に変更する。

test88_13.gif
これで実行すると文字化けせずにファイル内容をメッセージボックスに表示できた。

プロジェクトファイルをダウンロード

トラックバック

この一覧は、次のエントリーを参照しています: MFCでテキストファイルを読み込む:

» ファイル読込み 送信元 プログラマーズ雑録
TRY {     CFile file;   &nbs... [詳しくはこちら]


カテゴリー「ファイル・フォルダ」 のエントリー