![]()
ここではMFCを利用して簡単にテキストファイルを読み込む。
「ファイル」メニューの「新規作成」から「プロジェクト」を選択し、現れたウインドウで「MFCアプリケーション」を使う。
![]()
MFCアプリケーションウイザードが開いたら「アプリケーションの種類」から「ダイアログベース」を選択する。
![]()
これでプロジェクトが生成された。
次にダイアログにボタンを配置するため「表示」メニューから「リソースビュー」を選択する。
![]()
左側にリソースビューが開いたら「Dialog」にあるメインウインドウ用のフォームを開く。
![]()
そしてボタンを配置するためツールボックスの「Button」をフォームへドラッグアンドドロップする。
![]()
これでボタンが配置された。次にボタンを押したときの動作を実装するため、ボタンをダブルクリックする。
![]()
すると自動的にメッセージハンドラなどが作成されると同時にソースコードの該当部分が開く。
ここでは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);
![]()
ボタンを押すとファイルが読み込まれ、ファイル内容がメッセージボックスとして表示される。しかしここでは日本語部分が完全に文字化けしてしまった。
これはMFCアプリケーションウイザードではデフォルトでユニコードビルドとなっているためと、MFCのバグ(設計ミス)からCStdioFile::ReadStringAのようなメンバー関数が用意されていないためだ。
![]()
この場合、簡単に文字化けを直すには非ユニコードビルドにする。設定するにはまず「プロジェクト」メニューから「プロパティ」を選択する。
![]()
そして開いたウインドウの文字セットを「マルチバイト文字セットを使用する」に変更する。
