ダイアログバーの作成(VC++) 1.フレームベースのプロジェクトを作成します。 2.ダイアログバーのためのダイアログのリソースを作成します。リソースは、スタイルが「チャイルド」、境界線が「なし」としするダイアログです。例えば、IDはIDD_DIALOG1とします。テストのため、エディットとボタンを1つずつ張り付けておきます。 3.CDialogBar型メンバ変数を追加します。CMainFrameクラスに、CDialogBar型のメンバ変数m_dlgbarTestを追加する。 CDialogBar m_dlgbarTest; int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("Failed to create toolbar\n"); return -1; // 作成に失敗 } if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // 作成に失敗 } // ダイアログバーの生成 if(!m_dlgbarTest.Create(this, IDD_DIALOG1, WS_VISIBLE | CBRS_LEFT, AFX_IDW_TOOLBAR)) { TRACE0("Failed to create toolbar\n"); return -1; // 作成に失敗 } m_dlgbarTest.EnableDocking(CBRS_ALIGN_ANY); // TODO: ツール バーをドッキング可能にしない場合は以下の3行を削除 // してください。 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); DockControlBar(&m_dlgbarTest); m_dlgbarTest.SetWindowText(_T("Test...")); return 0; }5.ボタンのクリック処理。ボタンの処理ハンドルは、CMainFrameのメッセージマップに追加します。例、ボタンをクリックしたら、エディットに"Clicked."を表示させます。 void CMainFrame::OnButton1() { // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください m_dlgbarTest.GetDlgItem(IDC_EDIT1)->SetWindowText(_T("Clicked.")); }6.ダイアログバーの表示と非表示。別の ツールバーのように、表示と非表示するには、メニューのIDM_DIALOG_BAR_DISPを追加します。メニューの処理ハンドルは下記のよう記述します。 void CMainFrame::OnUpdateDialogBarDisp(CCmdUI* pCmdUI) { // TODO: この位置に command update UI ハンドラ用のコードを追加してください pCmdUI->SetCheck(m_dlgbarTest.IsWindowVisible()); } void CMainFrame::OnDialogBarDisp() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください if( m_dlgbarTest.IsWindowVisible() ) ShowControlBar(&m_dlgbarTest, FALSE, FALSE); else ShowControlBar(&m_dlgbarTest, TRUE, FALSE); } |