MFCツールバーにEditBoxとButtonを追加

1719 ワード

1.リソースビューにEditBox、Buttonコントロールを追加し、IDはそれぞれID_EDIT_SEED, ID_BTN_SEED
2.CMainFrameにメンバー変数を追加
CMFCToolBarEditBoxButton *m_editSeed;
CMFCToolBarButton *m_btnSeed;

3.CMainFrame::OnCreateでコントロールを作成する
m_editSeed = new CMFCToolBarEditBoxButton(ID_EDIT_SEED, GetCmdMgr()->GetCmdImage(ID_EDIT_SEED, FALSE));
m_editSeed->EnableWindow(true);
m_editSeed->SetContents("0");
//m_editSeed->CanBeStretched();
//m_editSeed->HaveHotBorder();
//m_editSeed->SetFlatMode();
//m_editSeed->OnSize(65);
m_btnSeed = new CMFCToolBarButton(ID_BTN_SEED, GetCmdMgr()->GetCmdImage(ID_BTN_SEED, FALSE), "SEED");
m_btnSeed->EnableWindow(true);
m_btnSeed->m_bText = true;
m_btnSeed->m_strText = "NUM";

4.ツールバーコントロール置換関数を追加
afx_msg LRESULT OnToolbarReset(WPARAM, LPARAM);

ON_REGISTERED_MESSAGE(AFX_WM_RESETTOOLBAR, OnToolbarReset)

LRESULT CMainFrame::OnToolbarReset(WPARAM wp, LPARAM lp)
{
	m_wndToolBar.ReplaceButton(ID_EDIT_SEED, *m_editSeed);
	m_wndToolBar.ReplaceButton(ID_BTN_SEED, *m_btnSeed);
	return 0;
}

5.コントロールイベント関数を追加します.そうしないと、コントロールにenableはありません.
afx_msg void OnUpdateEditSeed(CCmdUI *pCmdUI);
afx_msg void OnBnClickedButtonSeed();

ON_UPDATE_COMMAND_UI(ID_EDIT_SEED, &CMainFrame::OnUpdateEditSeed)
ON_BN_CLICKED(ID_BTN_SEED, &CMainFrame::OnBnClickedButtonSeed)

void CMainFrame::OnUpdateEditSeed(CCmdUI *pCmdUI)
{
	int index = m_wndToolBar.CommandToIndex(ID_EDIT_SEED);
	CMFCToolBarEditBoxButton* editSeed = (CMFCToolBarEditBoxButton*)m_wndToolBar.GetButton(index);
	editSeed->EnableWindow(TRUE);
}

void CMainFrame::OnBnClickedButtonSeed()
{
	
}