剛開始學(xué)習(xí)MFC單文檔的使用,想在工具欄上添加一個(gè)按鈕。在那個(gè)空白按鈕上,畫上圖案,就會(huì)新增一個(gè)按鈕。然后利用類向?qū)砑禹憫?yīng)消息。在“命令”中找到按鈕的ID,添加COMMAND消息處理。這時(shí),按鈕就會(huì)由灰色,變成可用狀態(tài)。編寫事件處理函數(shù)如:
楚雄州網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,楚雄州網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為楚雄州成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的楚雄州做網(wǎng)站的公司定做!
void CMainFrame::OnFormview1() { AfxMessageBox(_T("ok")); m_bBtn1 = FALSE; } //如果想禁用此按鈕,可以定義一個(gè)類成員變量,如下: void CMainFrame::OnUpdateFormview1(CCmdUI *pCmdUI) { pCmdUI->Enable(m_bBtn1); }
注意:事件處理類的為CMainFrame,如果添加到其他類中,就不起作用了。
要想到點(diǎn)擊按鈕時(shí),實(shí)現(xiàn)視圖切換。請(qǐng)先在資源中,添加一個(gè)FORMVIEW視圖窗口,并添加一個(gè)相應(yīng)的類。繼承自CFormView類,如CMyView。
在CMainFrame類中,添加兩個(gè)成員變量,如下:
//請(qǐng)包含兩個(gè)視圖類的.h文件 CMyView * m_pMyView;//新添加的視圖 CMFCApplication1View * m_pNormalView;//原來(lái)默認(rèn)視圖
點(diǎn)擊工具欄上的按鈕,顯示新視圖,如下:
void CMainFrame::OnBtnStart() { CMFCApplication1Doc * pDoc = (CMFCApplication1Doc*)GetActiveDocument(); if (m_pMyView==0) { m_pNormalView = (CMFCApplication1View*)GetActiveView(); m_pMyView = new CMyView; m_pMyView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, rectDefault, this, AFX_IDW_PANE_FIRST + 1, NULL); } pDoc->AddView(m_pMyView); m_pNormalView->SetDlgCtrlID(AFX_IDW_PANE_FIRST + 1); m_pMyView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); m_pMyView->ShowWindow(SW_SHOW); m_pNormalView->ShowWindow(SW_HIDE); SetActiveView(m_pMyView); pDoc->RemoveView(m_pNormalView); this->RecalcLayout(); }
因?yàn)镃FormView類中的Create函數(shù)為protected類型,所以CMyView須重載此函數(shù):
BOOL Create(LPCTSTR, LPCTSTR, DWORD,const RECT&, CWnd*, UINT, CCreateContext*);
BOOL CMyView::Create(LPCTSTR a, LPCTSTR b, DWORD c, const RECT&d, CWnd*e, UINT f, CCreateContext*g) { return CFormView::Create(a, b, c, d, e, f, g); }
如果,要再切換回原來(lái)的視圖,可以再添加一個(gè)按鈕,點(diǎn)擊事件處理函數(shù),如下:
void CMainFrame::OnBtnShow() { CMFCApplication1Doc * pDoc = (CMFCApplication1Doc*)GetActiveDocument(); pDoc->AddView(m_pNormalView); m_pNormalView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); m_pMyView->SetDlgCtrlID(AFX_IDW_PANE_FIRST+1); m_pMyView->ShowWindow(SW_HIDE); m_pNormalView->ShowWindow(SW_SHOW); SetActiveView(m_pNormalView); pDoc->RemoveView(m_pMyView);//文檔綁定可以視需要而定 this->RecalcLayout(); }