▼Windows Mobileプログラミングメモ▼
ファイルの読み書き

ファイルの読み書きを行うプログラムを作成する。

text.txtがルートに保存される。
エミュレータでもエミュレータ内のファイルエクスプローラで閲覧可能。
エミュレータとPCでファイルのやりとりを行う時は、 エミュレータのメニュー「ファイル→構成」で共有フォルダを設定。
指定したフォルダがエミュレータのSDカード領域として共有される。

ダイアログの準備
  1. ソリューションエクスプローラのリソースファイルを右クリックし、ポップアップ「追加→リソース」を選択。
  2. Dialogをダブルクリックし、ダイアログ(IDD_DIALOG1)を生成。
  3. OKボタン(IDOK)のIDを"IDC_READ"、Captionを"読み込み"に変更。
  4. キャンセルボタン(IDCANCEL)のIDを"IDC_WRITE"、Captionを"書き込み"に変更。
  5. ツールボックスの「Edit Control(IDC_EDIT1)」をドラッグ&ドロップでダイアログに配置。
ソースコードの作成
  1. ソリューションエクスプローラのソースファイルを右クリックし、ポップアップ「追加→クラス」を選択。
  2. main.cppという名前でファイル保存。
  3. ソースコードを以下のように編集。
    main.cpp
    #include <windows.h> 
    #include <windowsx.h>
    #include "resource.h"
    #include <aygshell.h>
    #pragma comment(lib, "aygshell.lib") //関数の宣言 BOOL DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); BOOL readFile(char* path,char* out_text,int* out_size); BOOL writeFile(char* path,char* out_text,int size); //変数の宣言 byte text[1024]; //メイン int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPWSTR lpCmdLine,int nShowCmd) { //ダイアログの生成 DialogBoxW(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DlgProc); return 0; } //ダイアログのイベント処理 BOOL DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { char str[1024]={0}; TCHAR strw[1024]={0}; int size=0; switch(uMsg) { //初期化 case WM_INITDIALOG:{ //フルスクリーン SHINITDLGINFO sidi={ SHIDIM_FLAGS,hDlg, SHIDIF_DONEBUTTON|SHIDIF_SIZEDLGFULLSCREEN|SHIDIF_EMPTYMENU}; SHInitDialog(&sidi); } break; //コマンド case WM_COMMAND: switch(LOWORD(wParam)) { //読み込みボタン case IDC_READ: //読み込み if (readFile("test.txt",str,&size)) { //char→TCHAR変換 MultiByteToWideChar(CP_ACP,0,str,size,strw,1024-1); //テキストの指定 Edit_SetText(GetDlgItem(hDlg,IDC_EDIT1),strw); } else { MessageBoxW(NULL,_T("エラーです。"),_T(""),0); } break; //書き込みボタン case IDC_WRITE: //テキストの取得 Edit_GetText(GetDlgItem(hDlg,IDC_EDIT1),strw,1024); //TCHAR→char変換 WideCharToMultiByte(CP_ACP,0,strw,wcslen(strw),str,1024-1,NULL,NULL); //書き込み if (writeFile("test.txt",str,strlen(str))) { MessageBoxW(NULL,_T("保存しました。"),_T(""),0); } else { MessageBoxW(NULL,_T("エラーです。"),_T(""),0); } break; //OKボタン case IDOK: EndDialog(hDlg,LOWORD(wParam)); break; } break; //クローズ case WM_CLOSE: DestroyWindow(hDlg); break; } return FALSE; } //ファイルの読み込み BOOL readFile(char* path,char* out_text,int* out_size) { FILE *fp; if ((fp=fopen(path,"r"))==NULL) return FALSE; *out_size=fread(out_text,sizeof(char),1024,fp); fclose(fp); return TRUE; } //ファイルの書き込み BOOL writeFile(char* path,char* text,int size) { FILE *fp; if ((fp=fopen(path,"w"))==NULL) return FALSE; fwrite(text,sizeof(char),size+1,fp); fclose(fp); return TRUE; }



−戻る−