Visualization Tool Kit(VTK)など

×
CFileDialogのカスタマイズ方法は従来のSetTemplateがある.一方,Vista以降のOS限定でVS2008およびVS2010以降であれば,レイアウトの自由度はないが直接コントロールを使いすることが可能である.

SetTemplateによる従来手法

CFileDialogの派生クラスを作り,SetTemplateでDialog Templateを設定する.各コントロールに対するイベント等を派生クラスに実装する.
Visual Studio2008以降をWindows VistaもしくはWindows7で用いる場合は,コンストラクタの最後の引数BOOL bVistaStyleをFALSEにしなければならない.
開発環境がWindowsXPであっても実行環境がVista以降となる可能性があるため,明示的にFALSEを指定しておく.
これによりSetTemplateが可能となる.なお,TRUEの状態でSetTemplateをコールすると例外が投げられる.

VS2008(Vista以降)

コンストラクタの最後の引数 BOOL bVistaStyle をTRUEとするとVista以降のGUIで表示される.IFileDialogCustomizeを取得し,様々なコントロールを追加および値の取得が可能である.
 
  CFileDialog fd(TRUE, "txt", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "text file(*.txt)|*.txt|all file(*.*)|*.*||", this, 0, TRUE);
  IFileDialogCustomize* pCustomize = fd.GetIFileDialogCustomize();
  pCustomize->AddCheckButton(107, "Sample check box", FALSE);
 

VS2010(Vista以降)

さらに簡便化されており,CFileDialogにIFileDialogCustomizeの関数が委譲されている.しかしそれはまだ中途半端でありIFileDialogCustomizeの全ての機能を持っているわけではない.
例えば,IFileDialogCustomize::GetSelectedControlItemなど.

  
  CFileDialog fd(TRUE, "txt", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "text file(*.txt)|*.txt|all file(*.*)|*.*||", this, 0, TRUE);
  AddCheckButton(107, "Sample Check Button", FALSE);
  if(fd.DoModal() == IDOK)
  {
    if( fd.GetCheckButtonState() )
    {
      //checked
    }
    else
    {
      //not checked
    }
  }
  

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー

チュートリアル

アルゴリズム(数学)

並列計算

STL

#include<memory> #include<string> #include<sstream> #include<algorithm> #include<functional> #include<numeric>

Media Foundation

【メニュー編集】
Wiki記法ガイド

メンバーのみ編集できます

広告募集中