OpenCASCADE(OCC)模型视角的自由切换(一)——MFC工具栏添加按钮和触发对应事件响应

本人利用OCC基于MFC多文档的框架,想要实现模型视角的自由切换。首先我的思路是利用MFC框架的工具栏,添加新的Botton按钮,然后在Botton按钮上绘制每个视角对应的位图,作为切换视角的标识,最后对每个Botton按钮添加事件响应。

一、在工具栏添加按钮

首先打开程序的资源视图:打开Toolbar下的IDR_MAINFRAME_256,

第一次打开,这里会有许多默认的按钮,像新建、打开、保存、剪切、复制、粘贴、打印等等。

我们可以把不需要的按钮删除:选中拖拽出去即可。

如果想要添加新的按钮,点击最后一项的空白按钮处进行绘制我们需要的位图即可,绘制位图时可借助工具栏,切换画笔颜色可选择最右侧颜色属性。

!!!! 注意:每次绘制一个按钮,都要修改一个合理的按钮ID名,方便我们后面使用。!!!

二、工具栏添加的按钮和菜单栏里的视图进行关联

 首先打开资源视图下的Menu下的IDR_MAINFRAME,选择视图下的工具栏和停靠窗口这一项,添加与刚才工具栏新按钮对应的菜单项,使菜单项的ID和工具栏中按钮的ID保持一致。这里我在工具栏中添加了八个新按钮,所以这里对应添加八个菜单项。

3、添加对应的事件响应

 首先打开类视图中的主框架CMainFrame,右击属性添加按钮事件:

 点击加号 添加Command事件 (add),对应的八个都进行添加;

添加完成之后:头文件中多了八个函数

public:
	
	afx_msg void OnButtonWire();
	afx_msg void OnButtonShape();
	afx_msg void OnButtonUp();
	afx_msg void OnButtonBottom();
	afx_msg void OnButtonLeft();
	afx_msg void OnButtonRight();
	afx_msg void OnButtonFront();
	afx_msg void OnButtonBack();

源文件中:

    ON_COMMAND(ID_BUTTON_WIRE, &CMainFrame::OnButtonWire)
	ON_COMMAND(ID_BUTTON_SHAPE, &CMainFrame::OnButtonShape)
	ON_COMMAND(ID_BUTTON_UP, &CMainFrame::OnButtonUp)
	ON_COMMAND(ID_BUTTON_BOTTOM, &CMainFrame::OnButtonBottom)
	ON_COMMAND(ID_BUTTON_LEFT, &CMainFrame::OnButtonLeft)
	ON_COMMAND(ID_BUTTON_RIGHT, &CMainFrame::OnButtonRight)
	ON_COMMAND(ID_BUTTON_FRONT, &CMainFrame::OnButtonFront)
	ON_COMMAND(ID_BUTTON_BACK, &CMainFrame::OnButtonBack)

下面实现点击按钮触发事件:

void CMainFrame::OnButtonWire()
{
	// TODO: 在此添加命令处理程序代码
	AfxMessageBox(_T("您按了 ButtonWire 按钮"));
	
}


void CMainFrame::OnButtonShape()
{
	// TODO: 在此添加命令处理程序代码
	AfxMessageBox(_T("您按了 ButtonShape 按钮"));

}


void CMainFrame::OnButtonUp()
{
	// TODO: 在此添加命令处理程序代码
	AfxMessageBox(_T("您按了 ButtonUp 按钮"));
	


void CMainFrame::OnButtonBottom()
{
	// TODO: 在此添加命令处理程序代码
	AfxMessageBox(_T("您按了 ButtonBottom 按钮"));
	
}


void CMainFrame::OnButtonLeft()
{
	// TODO: 在此添加命令处理程序代码
	AfxMessageBox(_T("您按了 ButtonLeft 按钮"));
	
}


void CMainFrame::OnButtonRight()
{
	// TODO: 在此添加命令处理程序代码
	AfxMessageBox(_T("您按了 ButtonRight按钮"));
	
}


void CMainFrame::OnButtonFront()
{
	// TODO: 在此添加命令处理程序代码
	AfxMessageBox(_T("您按了 ButtonFront按钮"));
	
}


void CMainFrame::OnButtonBack()
{
	// TODO: 在此添加命令处理程序代码
	AfxMessageBox(_T("您按了 ButtonBack按钮"));
	
}

运行结果》》

1.

 2.

 后面的按钮也是这个效果,这里就不一一做展示了。

!!!!!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值