单文档工具栏按钮
刚开始学习MFC单文档的使用,想在工具栏上添加一个按钮。在那个空白按钮上,画上图案,就会新增一个按钮。然后利用类向导添加响应消息。在“命令”中找到按钮的ID,添加COMMAND消息处理。这时,按钮就会由灰色,变成可用状态。编写事件处理函数如:
voidCMainFrame::OnFormview1(){AfxMessageBox(_T("ok"));m_bBtn1=FALSE;}//如果想禁用此按钮,可以定义一个类成员变量,如下:voidCMainFrame::OnUpdateFormview1(CCmdUI*pCmdUI){pCmdUI->Enable(m_bBtn1);}
注意:事件处理类的为CMainFrame,如果添加到其他类中,就不起作用了。
要想到点击按钮时,实现视图切换。请先在资源中,添加一个FORMVIEW视图窗口,并添加一个相应的类。继承自CFormView类,如CMyView。
在CMainFrame类中,添加两个成员变量,如下:
//请包含两个视图类的.h文件CMyView*m_pMyView;//新添加的视图CMFCApplication1View*m_pNormalView;//原来默认视图
点击工具栏上的按钮,显示新视图,如下:
voidCMainFrame::OnBtnStart(){CMFCApplication1Doc*pDoc=(CMFCApplication1Doc*)GetActiveDocument();if(m_pMyView==0){m_pNormalView=(CMFCApplication1View*)GetActiveView();m_pMyView=newCMyView;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();}
因为CFormView类中的Create函数为protected类型,所以CMyView须重载此函数:
BOOL Create(LPCTSTR, LPCTSTR, DWORD,const RECT&, CWnd*, UINT, CCreateContext*);
BOOLCMyView::Create(LPCTSTRa,LPCTSTRb,DWORDc,constRECT&d,CWnd*e,UINTf,CCreateContext*g){returnCFormView::Create(a,b,c,d,e,f,g);}
如果,要再切换回原来的视图,可以再添加一个按钮,点击事件处理函数,如下:
voidCMainFrame::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();}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。