スポンサーリンク

| キーワード:

C++CLIでファイルオープン・ファイルセーブダイアログ

OpenFileDialog,SaveFileDialogは共にSystem::Windows::Forms名前空間にある。

プロジェクトの初期設定によってはSystem.Windows.Forms.dllを明示的に#usingしなければならないかもしれない。

OKボタンが押されたかの判定はOK定数を使うが、System::Windows::Forms::DialogResult::OKでenum classされている。場所がわからないと詰まるので注意したい。

またこれらの関数はアプリケーションのカレントディレクトリを変更してしまうので、カレントディレクトリを維持したい場合はRestoreDirectory = trueを指定する。

 

using namespace System;
//本来これが必要。コンソールプロジェクトの場合は明示する必要がある
#using <System.Windows.Forms.dll>
/////////////////////////////////////////////////
//ファイルを開くダイアログ
void Open_File_Dialog(){

  System::Windows::Forms::OpenFileDialog^ ofd = gcnew System::Windows::Forms::OpenFileDialog();

  ofd->Filter = "テキストファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*";
  ofd->FilterIndex = 1;//初期状態でtxtが選択される
  ofd->Title = "テキストファイルを開く";//ダイアログのタイトル
  ofd->RestoreDirectory = true;//ダイアログの使用によってカレントディレクトリが変更されないようにする

  if (ofd->ShowDialog() == System::Windows::Forms::DialogResult::OK){
    Console::WriteLine( ofd->FileName );
  }
}
/////////////////////////////////////////////////////////////////////////
//ファイルを保存ダイアログ
void Save_FileDialog(){

  System::Windows::Forms::SaveFileDialog^ sfd = gcnew System::Windows::Forms::SaveFileDialog();

  sfd->FileName = "default.jpg";
  sfd->InitialDirectory = "C:\\";
  sfd->Filter = "PNGファイル(*.png)|*.png|JPGファイル(*.jpeg;*.jpg)|*.jpeg;*.jpg|すべてのファイル(*.*)|*.*";

  sfd->FilterIndex = 2;//初期状態でjpgが選択される
  sfd->Title = "画像ファイルを保存";//ダイアログのタイトルを設定する
  sfd->RestoreDirectory = true;//ダイアログの使用によってカレントディレクトリが変更されないようにする  

  //ダイアログを表示する
  if (sfd->ShowDialog() == System::Windows::Forms::DialogResult::OK)
  {
    //OKボタンがクリックされたとき、選択されたファイル名を表示する
    Console::WriteLine(sfd->FileName);
  }
}
///////////////////////////////////////////////////
//エントリーポイント
[STAThread]
int main(array<System::String ^> ^args)
{
  Open_File_Dialog();

  Save_FileDialog();

  Console::Read();//待機
    return 0;
}

 

filesave

 

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: