VC中如何创建多个工具条

原文在这里

点击打开链接


PS:原文有些地方有误,本人已经修改了,所以下面的内容与原文不完全一致


粟利民

  在实际的软件开发中,我们常常需要创建多个自定义的工具条,并且要象标准的工具条那样,允许用户通过鼠标将自定义的工具条移动到框架的其它地方,还可以根据需要显示或是隐藏该工具条。通过实践,我们在Visual C++ 6.0中编程实现了创建自定义的工具条,从而在应用程序中可并存多个工具条。

  1. 在Visual C++ 6.0中用AppWizard以默认方式创建SDI或MDI的应用程序工程,工程名称为MyBars。

  2. 在ResourceView中选择“Toolbar”并点击右键,通过选择 “Insert Toolbar”新建一工具条,其ID值设为ID_MYTOOLBAR。在该工具条上添加两个位图按钮,并双击每个位图按钮,设置其ID值分别为ID_MYTOOLBAR_CIRCLE和ID_MYTOOLBAR_RECT。

  3. 在MainFrame.h文件中CMainFrame类定义的前面定义一个映射工具条按钮图像和程序命令ID 的数组,这是一个UINT类型的数组:

static UINT BASED_CODE My_Buttons[]=
	{ // 要和工具条中位图的次序一样
	ID_MYTOOLBAR_CIRCLE,
	ID_MYTOOLBAR_RECT
};



  4. 在CMainFrame类中添加一工具条对象指针m_pMyToolBar:

 
class CMainFrame : public CFrameWnd
{……
protected:  // control bar embedded members
	CStatusBar  m_wndStatusBar;
	CToolBar    m_wndToolBar;
	CToolBar *  m_pMyToolBar; //新添加的工具条对象指针
……
};


  5.在CMainFrame::OnCreate函数中添加代码创建和初始化工具条,并建立所需的连接关系,代码如下:

 
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{……
	//创建和初始化工具条对象
	m_pMyToolBar=new CToolBar();
	m_pMyToolBar->Create(this, WS_CHILD|WS_VISIBLE|CBRS_TOP, 0x9100);
	// 将按钮图象和工具条对象连接起来
	m_pMyToolBar->LoadBitmap(ID_MYTOOLBAR);
	// 将映射数组My_Buttons和工具条对象连接起来
	m_pMyToolBar->SetButtons(My_Buttons, sizeof(My_Buttons)/sizeof(UINT));
	// 允许用户通过鼠标将工具条移动到框架的其它地方
	m_pMyToolBar->EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(m_pMyToolBar);
	
	return 0;
}


  6. 通过View-〉ClassWizard为工具条的按钮ID值添加消息响应处理函数,例如为ID_TOOLBAR_CIRCLE添加的处理函数如下所示:

 
void CUsemenuView::OnMytoolbarCircle() 
{
	// TODO: Add your command handler code here
	AfxMessageBox("Circle"); // 可改为具体的有关代码	
}

void CUsemenuView::OnMytoolbarRect() 
{
	// TODO: Add your command handler code here
	AfxMessageBox("Rect"); // 可改为具体的有关代码	
}


  这样,我们就创建了一个新的工具条(如图1),上面有两个按钮,点击按钮将会执行有关的操作,并且用户还可以将工具条任意拖动到框架的其它地方。

  图1

  工具条建立之后,就被连接到应用程序的框架窗口上,我们一般还要允许用户根据需要显示或隐藏该工具条。下面的代码就可实现这种要求:

  int nShow=SW_SHOWNORMAL; // 想要隐藏则设置为SW_HIDE

  m_pMyToolBar-〉ShowWindow(nShow); // 显示或隐藏工具条

  RecalcLayout(); // 通知框架窗口, 重新计算工具条的位置

  以上的程序在Visual C++ 6.0中调试通过。 



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值