7.メニューポップアップ
機能:画面上部のメニューを選択すると、ポップアップウィンドウが表示されます。
例:下の画面を見てください。
このページ内のリンク
@ MenuPopTestというプロジェクト名で、SDIで生成
A プロジェクトにプロパティシートを追加します。(プロパティシートでなくてもいいですが・・・)
B プロパティシート用のダイアログをIDD_PROPPAGE1,IDD_PROPPAGE2,IDD_PROPPAGE3を作成します。
C メニューのIDR_MAINFRAMEにテスト用という項目を追加し、その下に設定という項目を追加します。
D CMyPropertySheet::CMyPropertySheet(CWnd* pWndParent):CPropertySheet(IDS_PROPSHT_CAPTION, pWndParent)に、
以下のコードを追加して、プロパティページを登録します。
AddPage(&m_Page1);
AddPage(&m_Page2);
AddPage(&m_Page3);
EClassWizardからCMainFrameクラスの中から、Cで作成した設定という項目のCOMMANDメッセージハンドラを作成し、
以下のコードを追加します。
CMyPropertySheet propSheet;
propSheet.DoModal();
8.プログレスダイアログ
機能:プログレスバーをダイアログで表示します。
例:よく使われますね。
@ ProgDlgTestというプロジェクト名で、ダイアログベース生成
A プロジェクトにプログレスダイアログを追加します。(プロジェクトにコンポーネントの追加です。)
B メインのダイアログにボタンを作成し、クリックイベントハンドラに以下のコードを追加します。
int i;
CProgressDlg pd;
- Create();
- SetStatus("プログレスバーテスト中です。ほんとです。");
for(i=0;i<10;++i){
pd.StepIt();
if(pd.CheckCancelButton()) break;//キャンセルボタンが押されたので終了します。
Sleep(500);
}
9.プロパティシート
機能:設定などのダイアログに使われます。
例:下の画面を見てください。
@ ProsheetTestというプロジェクト名で、ダイアログベース生成
A プロジェクトにプロパティーシートを追加します。(プロジェクトにコンポーネントの追加です。)
B メインのダイアログにボタンを作成し、クリックイベントハンドラに以下のコードを追加します。
CMyPropertySheet propSheet;
propSheet.DoModal();
C 作成したプロパティーシートのページは、それぞれ新規クラスとします。
D CMyPropertySheetに以下のメンバ変数を追加します。
CMyPropertyPage1 m_Page1;
CMyPropertyPage2 m_Page2;
CMyPropertyPage3 m_Page3;
CMyPropertyPage4 m_Page4;
CMyPropertyPage5 m_Page5;
E CMyPropertySheet::CMyPropertySheet(CWnd* pWndParent):CPropertySheet(IDS_PROPSHT_CAPTION, pWndParent)に、
以下のコードを追加します。
AddPage(&m_Page1);
AddPage(&m_Page2);
AddPage(&m_Page3);
AddPage(&m_Page4);
AddPage(&m_Page5);
10.スプリットウィンドウ
機能:SDIにクライアントウィンドウ領域を分割します。
例:下の画面を見てください。
@ SplitWndTestというプロジェクト名で、SDI生成
A プロジェクトにスプリットバーを追加します。(プロジェクトにコンポーネントの追加です。)
B チャイルドスタイルのダイアログを3つ作成します。(リソースより)
C 作成したチャイルドウィンドウでそれぞれクラスを作成します。
D CMainFrameに以下のメンバ変数を追加します。
CSplitterWnd m_SplitWndSub;
SplitterWnd m_SplitWndMain;
E MainFrameにOnCreateClientハンドラを暮らすウィザードから作成し、以下のコードを追加します。
m_SplitWndMain.CreateStatic(this,1,2);
m_SplitWndSub.CreateStatic(&m_SplitWndMain,2,1,WS_CHILD | WS_VISIBLE,m_SplitWndMain.IdFromRowCol(0,1));
m_SplitWndSub.CreateView(0,0,RUNTIME_CLASS(CSplitWnd2),CSize(DEFAULT_SPLIT_SIZE_X,DEFAULT_SPLIT_SIZE_Y),pContext);
m_SplitWndSub.CreateView(1,0,RUNTIME_CLASS(CSplitWnd3),CSize(DEFAULT_SPLIT_SIZE_X,0),pContext);
m_SplitWndMain.CreateView(0,0,RUNTIME_CLASS(CSplitWnd1),CSize(DEFAULT_SPLIT_SIZE_X,0),pContext);
return TRUE;
11.スタティックビットマップ
機能:スタティックのビットマップをタイマーによりアニメーションさせます。
例:下の画面を見てください。ごみ箱の絵が動きます。
@ StaticTestというプロジェクト名で、ダイアログベースで生成
A ダイアログにピクチャー及び開始、終了のボタンを作成します。
B 開始ボタンのクリックハンドラを作成し、以下のコードを追加します。
CStatic *pStatic = (CStatic*)GetDlgItem(IDC_STATIC);
pStatic->SetWindowText("終了ボタンを押す");
SetTimer(TIMER_ID,TIMER,NULL);
C 終了ボタンのクリックハンドラを作成し、以下のコードを追加します。
CStatic *pStatic = (CStatic*)GetDlgItem(IDC_STATIC);
pStatic->SetWindowText("開始ボタンを押す");
KillTimer(TIMER_ID);
D WM_TIMERのハンドラを作成し、以下のコードを追加します。
if( m_BitmapNo == 0 ){
CStatic *pStatic =(CStatic*)GetDlgItem(IDC_STATICBITMAP);
pStatic->SetBitmap(m_Bitmap2);
m_BitmapNo = 1;
}
else{
CStatic *pStatic = (CStatic*)GetDlgItem(IDC_STATICBITMAP);
pStatic->SetBitmap(m_Bitmap1);
m_BitmapNo = 0;
}
E WM_DESTROYのハンドラを作成し、以下のコードを追加します。
CDialog::OnDestroy();
m_Bitmap1.DeleteObject();
m_Bitmap2.DeleteObject();
12.ウィザードダイアログ
機能:インストーラなどで使用されるウィザードを作成します。
例:"次へ"などのボタンがあるダイアログです。
@ WizardTestというプロジェクト名で、ダイアログベースで生成
A メインのダイアログにボタンをひとつ作成します。(ウィザード表示用です。)
B プロジェクトにプロパティーシートを追加します。追加したシートはそれぞれクラスを作成します。
(コンポーネントの追加時に、Wizardの設定をできます。例は3つのシートを作成しています。)
C CMyPropertySheetのメンバ変数に以下のコードを追加します。
CMyPropertyPage1 m_Page1;
CMyPropertyPage2 m_Page2;
CMyPropertyPage3 m_Page3;
D CMyPropertySheet::CMyPropertySheet(CWnd* pWndParent):CPropertySheet(IDS_PROPSHT_CAPTION, pWndParent)に、
以下のコードを追加します。
AddPage(&m_Page1);
AddPage(&m_Page2);
AddPage(&m_Page3);
E メインのダイアログに作成したボタンのクリックハンドラを作成し、以下のコードを追加します。
CMyPropertySheet propSheet;
propSheet.DoModal();