ツールバーにコンボボックスを追加(VC++) ツールバーにコントロールを追加します。例として、コンボボックスを追加します。 1.事前に、ツールバーに追加しようとする場所に、SEPARATOR(スペース)を追加しておきます。例えば、下記のように3番目にSEPARATOR(スペース)を追加しておきます。 IDR_MAINFRAME TOOLBAR 16, 15 BEGIN BUTTON ID_FILE_NEW BUTTON ID_FILE_OPEN BUTTON ID_FILE_SAVE SEPARATOR BUTTON ID_EDIT_CUT BUTTON ID_EDIT_COPY BUTTON ID_EDIT_PASTE SEPARATOR BUTTON ID_FILE_PRINT BUTTON ID_APP_ABOUT END
2.CMainFrameクラスにComboBoxのメンバーを追加します。 class CMainFrame : public CFrameWnd { protected: // create from serialization only CMainFrame(); DECLARE_DYNCREATE(CMainFrame) // Attributes public: #define IDM_COMBO 1234 CComboBox m_cmbboBox; ... }; 例: 3.ツールバー作成の処理に、下記のコードを追加します。 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; // fail to create } CRect rectCombo; //3番目のITEMの幅を100ピクセルに設定 m_wndToolBar.SetButtonInfo(3, IDM_COMBO, TBBS_SEPARATOR, 100); //3番目のITEMの領域で、Comboを作成 m_wndToolBar.GetItemRect(3, &rectCombo); rectCombo.top = 1; rectCombo.bottom = rectCombo.top + 100; if (!m_cmbboBox.Create( CBS_DROPDOWNLIST | WS_VSCROLL | WS_VISIBLE, rectCombo, &m_wndToolBar, IDM_COMBO ) ) { TRACE0("Failed to create combobox ...\n"); return FALSE; } //サイズ調整の為、フォントをセット m_cmbboBox.SetFont(m_wndToolBar.GetFont()); //COMBOにデータを設定。 m_cmbboBox.AddString(_T("This")); m_cmbboBox.AddString(_T("is")); m_cmbboBox.AddString(_T("a")); m_cmbboBox.AddString(_T("test")); m_cmbboBox.AddString(_T("program")); m_cmbboBox.SetCurSel(0); if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } // TODO: Delete these three lines if you don't want the toolbar to be dockable m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); return 0; }
|