扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:佚名 来源:blog 2007年11月14日
关键字: Visual C++ 2005 图像编程 工具栏
在这个图像处理工具软件中,需要实现的工具栏比较多。我想让每个工具栏都在浮动的时候没有关闭按钮,同时在工具箱Toolbar中还可以设置工具栏显示的列数。根据类抽象的原则,我们给所有的工具栏建立一个基类CBaseToolBar,从CToolBar派生。CBaseToolBar需实现的主要功能有:浮动时去掉关闭按钮和设置工具栏的列数。
从Visual Studio.Net开始,包括Visual C++ 2005,去掉了Visual C++ 6.0中类向导功能。一些概念上也发生了变化。可以包含多个工程的Workspace被Solution替代,称为一个解决方案。
在Visual C++ 2005添加一个新的类,只需要在解决方案资源管理器中选择相应的工程,右键点击的弹出菜单中选择添加类,就会弹出添加类的向导对话框。如下图:
|
|
|
void CBaseToolBar::SetColumns(int nColumns) { int nCount = GetToolBarCtrl().GetButtonCount(); for (int i = 0; i < nCount; i++) { UINT nStyle = GetButtonStyle(i); BOOL bWrap = (((i + 1) % nColumns) == 0); if (bWrap) nStyle |= TBBS_WRAPPED; //或上TBBS_WRAPPED风格就是换行 else nStyle &= ~TBBS_WRAPPED; SetButtonStyle(i, nStyle); } Invalidate(); GetParentFrame()->RecalcLayout(); } |
|
|
void CBaseToolBar::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) { CToolBar::OnWindowPosChanged(lpwndpos); if(IsFloating()) { if(m_pDockBar) // m_pDockBar指向停靠的窗口对象 { //如果停靠窗口是 CMiniFrameWnd就去掉系统菜单 //在IsFloating函数为FALSE的时候这个m_pDockBa的父窗口就是主框架 CWnd* pParent = m_pDockBar->GetParent(); if( pParent->IsKindOf(RUNTIME_CLASS(CMiniFrameWnd))) pParent->ModifyStyle(WS_SYSMENU, 0, 0 ); } } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。