Visual C++ 2008 Express Editionでアプリを作る(その2)

C++/CLIは筋が悪いのでC#を使った方が勉強しやすいと思う。俺はC#の仕様を何も知らないので、このまま進める。
1日目で追加したFolderBrowserDialogについて、少しだけ説明を追加しておく。フォームデザイナ上で追加すると

this->folderBrowserDialog1 = (gcnew System::Windows::Forms::FolderBrowserDialog());

などのコードを自動生成してくれるので、メンバ変数(folderBrowserDialog1)を使うだけで、フォルダ選択ダイアログが表示される。でまぁ、適当にフォームを作ってみた。Folder選択をクリックすると、フォルダ選択ダイアログが表示されて、左のTextBoxに選択したフォルダのパスが表示される。

20100111_preview_sample1
Click関数は、自動生成されたコードなのでその中身を書く。

System::Void FolderSelect_Click(System::Object^  sender, System::EventArgs^  e) {
  // Show the FolderBrowserDialog.
  System::Windows::Forms::DialogResult result = folderBrowserDialog1->ShowDialog();
  if ( result == ::DialogResult::OK ) {
	  this->TextBox_SavePath->Text = this->folderBrowserDialog1->SelectedPath;
	  // 復帰と同時にTextBoxの表示は更新される(どこの処理を通っているんだ?)
  }
}

基本的に、msdnのサンプルコードFolderBrowserDialog Class (System.Windows.Forms) | Microsoft Docsのままだ。ShowDialog()でダイアログが表示されて、ダイアログでOKを選択していたら、TextBoxの表示文字に代入しているだけ。
あとコメントにも書いているけど、テスト動作させてみるとこれだけでTextBoxの表示を更新してくれている。多分、何かのイベントが発生しているのだと推測しているけど、良くわからない。そのうち、理解できるだろう。

VC++のエディタで候補を表示させるために、this, this, thisと書くのがウザ過ぎる。消しても問題ないけど、面倒なのでそのままにしている。VC++のエディタも何とかして欲しい。