单文档的MFC程序,怎样为工具栏按钮添加图标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单文档的MFC程序,怎样为工具栏按钮添加图标相关的知识,希望对你有一定的参考价值。

参考技术A 这样图标肯定是能看见的,只是点不动,你试试这样:
重新再toobar中设计按钮,完了再空白区双击左键,给它一个ID,如IDM_Test,在菜单栏田间一个菜单项,ID也用IDM_Test,CTRL+w添加消息处理command,增加函数,编辑代码,写一句MessageBox("test");这样点按钮后就会弹出TESt提示,你试试啥

单文档工具栏按钮

刚开始学习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();
}


以上是关于单文档的MFC程序,怎样为工具栏按钮添加图标的主要内容,如果未能解决你的问题,请参考以下文章

单文档工具栏按钮

MFC应用程序类型

在C++的MFC工具栏按钮中实现改变单文档字体大小的方法

MFC 在自定义工具栏上添加有下拉菜单的按钮。

MFC单文档程序的菜单栏怎么修改高度和宽度?

mfc 单文档 多文档 对话框 区别