初日 最新 目次 MAIL HOME


*-- To Tell The Truth --*
Cruz
MAIL
HOME

My追加

2002年03月27日(水)
通勤の車窓から

本日は

飛鳥山が見えたりするんだけど、なんだか青々としてきちゃったなー。

ダンナの会社では、毎年花見がある。
場所取り等を新入社員にやらせるため、4月に入ってからなんだけど・・・。
今年は、4月に入ってからだと、桜の花見にはならないだろうな。
それでも花見要員確保のため、4月に入ってからだそうな。




プログラム機能追加作業は、思いのほか進みました。

我ながら


ものすごい集中力




で・・・。
やればできるじゃん。←自分

あとはテストとドキュメント修正と・・・・。
マニュアル修正、引継ぎ作業

まだ、いっぱいやること残っているんだな。はぁ。


今日のプログラム作成で、今さらわかったお間抜けなこと。

GetSaveFileName関数を使って、コモンコントロールの『ファイル保存』を使用しているのだが、何をどーした勘違いをしていたのか、ずっと【保存】ボタンのアクションを自分で指定するにはどーすればいいか悩んでいた。

悩む必要はないもの。




BOOL WriteSelectFile(HWND hWnd)
{
 OPENFILENAME ofn;

 memset(&ofn, 0, sizeof(OPENFILENAME));

 ofn.lStructSize = sizeof(OPENFILENAME);
 ofn.hwndOwner = hWnd;
 ofn.lpstrFilter = "txt files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
 ofn.lpstrFile = cpFileName;
 ofn.nMaxFile = MAX_PATH;
 ofn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY;
 ofn.nMaxFileTitle = 64;
 ofn.lpstrFileTitle = cpFileTitle;
 ofn.lpstrTitle = "ファイル 保存";

 return (GetSaveFileName(&ofn));
}




こんな関数を作る。




 case WM_COMMAND:
  switch(LOWORD(wParam)){
   case IDOK: // ファイル作成
     // ファイル名選択
     if(WriteSelectFile(hDlgWnd) != TRUE){
       MessageBox(hDlgWnd,
        "出力ファイル名を入力してください。",
        "ファイル作成エラー",
        MB_OK | MB_ICONEXCLAMATION);
     }else{
       // ファイル出力処理
       if(WriteData(hDlgWnd, cpFileName) == TRUE){
         char cpMsg[CHAR_MAX];

         sprintf(cpMsg, "ファイル\n【%s】\nを作成しました。", cpFileName);
         MessageBox(hDlgWnd,
          cpMsg,
          "ファイル保存 Success",
          MB_OK);

         // ダイアログ終了
         EndDialog(hDlgWnd, FALSE);
        }
     }
     return TRUE;




こんな風に使う。
そうすれば、コモンコントロールの『ファイル保存』で【保存】ボタンを押したら、実際にファイル出力処理を行うことができる。

【保存】ボタンに、処理を貼り付けている訳ではない。




今日のところはこんな感じで・・・。