博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单文档工具栏按钮
阅读量:6964 次
发布时间:2019-06-27

本文共 1966 字,大约阅读时间需要 6 分钟。

刚开始学习MFC单文档的使用,想在工具栏上添加一个按钮。在那个空白按钮上,画上图案,就会新增一个按钮。然后利用类向导添加响应消息。在“命令”中找到按钮的ID,添加COMMAND消息处理。这时,按钮就会由灰色,变成可用状态。编写事件处理函数如:

void CMainFrame::OnFormview1(){	AfxMessageBox(_T("ok"));	m_bBtn1 = FALSE;}//如果想禁用此按钮,可以定义一个类成员变量,如下:void CMainFrame::OnUpdateFormview1(CCmdUI *pCmdUI){	pCmdUI->Enable(m_bBtn1);}

注意:事件处理类的为CMainFrame,如果添加到其他类中,就不起作用了。

要想到点击按钮时,实现视图切换。请先在资源中,添加一个FORMVIEW视图窗口,并添加一个相应的类。继承自CFormView类,如CMyView。

在CMainFrame类中,添加两个成员变量,如下:

//请包含两个视图类的.h文件	CMyView   * m_pMyView;//新添加的视图	CMFCApplication1View  * m_pNormalView;//原来默认视图

点击工具栏上的按钮,显示新视图,如下:

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();}

因为CFormView类中的Create函数为protected类型,所以CMyView须重载此函数:

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);}

如果,要再切换回原来的视图,可以再添加一个按钮,点击事件处理函数,如下:

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();}
本文转自Chinayu201451CTO博客,原文链接:http://blog.51cto.com/9233403/2070569 ,如需转载请自行联系原作者
你可能感兴趣的文章
词法作用域与闭包
查看>>
Python中的Subprocess模块
查看>>
搭建移动端布局框架:重拾flex
查看>>
分布式存储Ceph RBD-Mirror 灾备实践
查看>>
蔡超:入门 Go 语言必须跨越的五个思维误区
查看>>
NGINX最新API管理模块已可用,针对内部和外部API进行了优化
查看>>
PayPal Agility with Stability On OpenStack
查看>>
解读2016之APM篇:快速增长的国际市场和前沿技术
查看>>
Elixir 初尝试 2 -- 模式匹配&等号&函数
查看>>
Java程序员:不要因未知而让云成本大涨
查看>>
Dubbo Mesh在闲鱼生产环境的落地实践
查看>>
eBay通过事件溯源实现持续交付
查看>>
最实用的Git命令
查看>>
[LintCode] Spiral Matrix I & Spiral Matrix II
查看>>
数据分析报表系统的80/20法则
查看>>
Maximum Gap@LeetCode
查看>>
初学Python——字典
查看>>
求职招聘渠道笔记
查看>>
TensorFlow 1.13.0 正式发布,谷歌开源的机器学习框架
查看>>
qt5.8_for_vs2015静态编译
查看>>