CMFCToolBar插入组合框

刚在CSDN博客上面看到一篇文章,讲解VS2008中的新类CMFCToolBar的使用, 其中有个关于插入组合框的部分居然要修改MFC的源代码,  文章链接 http://blog.csdn.net/chenjelly/article/details/6718478  


这里贴出正确的插入方法:


1. MainFrm.h, 声明变量

CMFCToolBarComboBoxButton  *m_comboAddress;


2. MainFrm.cpp, 在OnCreate函数中创建工具条并且插入一个组合框

if (!m_wndToolBar.CreateEx (this, TBSTYLE_FLAT,
		CBRS_SIZE_FIXED | AFX_DEFAULT_TOOLBAR_STYLE) ||
		!m_wndToolBar.LoadToolBar (IDR_MAINFRAME, uiToolbarColdID, uiMenuID, 
		FALSE /* Not locked */, uiToolbarDisID, 0, uiToolbarHotID, uiToolbarPresID))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	//插入组合框
	m_wndToolBar.InsertButton 
		(CMFCToolBarComboBoxButton(ID_GO_ADDRESS_EDIT, 0), 3);
	
	//设置组合框属性
	m_comboAddress = (CMFCToolBarComboBoxButton*)m_wndToolBar.GetButton(3);
	m_comboAddress->EnableWindow(TRUE);
	m_comboAddress->SetCenterVert();
	m_comboAddress->SetDropDownHeight(100);//设置下拉列表的高度
	m_comboAddress->SetFlatMode();
	
	//添加内容
	m_comboAddress->AddItem(_T("once"));
	m_comboAddress->AddItem(_T("if only"));
	m_comboAddress->AddItem(_T("P.S.I Love You"));
	m_comboAddress->AddItem(_T("Love Me If You Dare"));
	m_comboAddress->SelectItem(0);			//默认选中


	DockPane (&m_wndToolBar);


另外的就是网上找的一篇文章了


VC2008在CMFCToolBar工具栏中加入组合框

如何在CMFCToolBar工具栏中加入组合框等控件,且先看在线MSDN上怎么说的:

To add a combo box button to a toolbar, follow these steps:

1. Reserve a dummy resource ID for the button in the parent toolbar resource.

2. Construct a CMFCToolBarComboBoxButton object.

3. In the message handler that processes the AFX_WM_RESETTOOLBAR message, replace the dummy button with the new combo box button by using CMFCToolBar::ReplaceButton.

具体过程如下:

1.在工具栏资源编辑器中加入id为IDR_COM的空白工具栏,

2.在头文件中定义组合框

CMFCToolBarComboBoxButton* m_ComboButton; 

3.BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)中添加消息响应

    ON_REGISTERED_MESSAGE(AFX_WM_RESETTOOLBAR, OnToolbarReset)

在头文件中声明消息函数:

     afx_msg LRESULT OnToolbarReset(WPARAM,LPARAM);

在CMainFram中定义处理函数:

LRESULT CMainFrame::OnToolbarReset(WPARAM wp,LPARAM lp)
{      
     m_ComboButton = new CMFCToolBarComboBoxButton(IDR_COM,GetCmdMgr ()->GetCmdImage (IDR_COM, FALSE));

     m_ComboButton->EnableWindow(true);
     m_ComboButton->SetCenterVert();
     m_ComboButton->SetDropDownHeight(25);
     m_ComboButton->SetFlatMode();
     m_ComboButton->AddItem(_T("OPTION1"));
     m_ComboButton->AddItem(_T("OPTION2"));
     m_ComboButton->SelectItem(0); 
     m_wndToolBar.ReplaceButton (IDR_COM, *m_ComboButton);
 return 0;
}

2、添加组合框的事件消息响应函数

消息映射:

ON_COMMAND(IDR_COM, &CMainFrame::OnClickComboBox)
 ON_CBN_SELCHANGE(IDR_COM,&CMainFrame::OnSelChangeClick)//别忘了在TOOLBAR中添加IDR_COM资源。

消息声明:

afx_msg void OnSelChangeClick();
 afx_msg void OnClickComboBox();

消息处理函数:

void CMainFrame::OnSelChangeClick()
{
 CMFCToolBarComboBoxButton* pSrcCombo = CMFCToolBarComboBoxButton::GetByCmd (IDR_COM, TRUE);
 int index = m_ComboButton->GetCurSel();
 index = pSrcCombo->GetCurSel();
 CString str = pSrcCombo->GetItem(index);
}

void CMainFrame::OnClickComboBox()
{

}

(注意:一定要GetByCmd;OnClickComboBox没有做任何处理,但是如果去掉的话,组合框将编程灰色,无法使用)。

注:更新工具栏:

1.工具栏的右侧向下的小箭头->添加或删除按钮->标准->重置工具栏

2.运行regedit打开注册表->HKEY_CURRENT_USER->Software->工程名,找到工程名将其从注册表中删之。









  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
要在cmfctoolbar添加编辑,可以按照以下步骤进行操作: 1. 首先,在窗口的头文件中包含相应的头文件,比如afxcmn.h。 2. 创建一个全局变量或者成员变量,用于引用编辑对象。例如,可以在窗口类的头文件中添加如下代码: ``` CEdit m_editBox; ``` 3. 在窗口的创建过程中,通过调用Create函数创建编辑。在窗口类的OnCreate函数中添加如下代码: ``` m_editBox.Create(WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL, CRect(0, 0, 100, 20), &m_wndToolBar, ID_MY_EDIT); ``` 这里,通过调用Create函数来创建编辑对象,并设置样式为WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL,位置为CRect(0, 0, 100, 20),父窗口为m_wndToolBar(即cmfctoolbar对象),并为编辑指定一个ID(这里为ID_MY_EDIT)。 4. 在窗口的布局过程中,通过调用MoveWindow函数设置编辑的位置和尺寸。例如,在窗口类的OnSize函数中添加如下代码: ``` m_editBox.MoveWindow(10, 10, 100, 20); ``` 这里,通过调用MoveWindow函数设置编辑的位置为(10, 10),尺寸为100x20。 5. 在窗口类的OnCmdMsg函数中添加对编辑的消息处理。例如,可以添加如下代码: ``` if (m_editBox.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)) return TRUE; ``` 这里,通过调用编辑的OnCmdMsg函数来处理与编辑相关的消息。 通过以上步骤,就可以在cmfctoolbar中成功添加一个编辑。需要注意的是,根据具体需求,可以根据编辑的样式、位置和尺寸进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值