您当前的位置看一看 -> 编程文档 -> .NET技术 -> VC.NET -> VC.NET技术资料-> 文章内容
栏目导航
热门文章
相关文章
Visual C++ 2005图像编程之工具栏
作者:未知 发布时间:2006-08-06

  设定好函数的返回类型和名称后,就添加参数。参数名框输入第一个参数的名称,然后点击添加按钮这个参数就被添加到右边的参数列表里。同时在下面的函数签名中可以预览函数的形式。是不是感觉功能比以前更丰富,使用更简单。添加完后在CPP文件中加入函数的实现代码:

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();
}

  设置列数的功能完成,接着看如何去掉浮动关闭按钮。如果里曾经用向导建立过基于对话框的程序,那么你注意了在对话框的OnInitDialog函数里,有默认生成的将“关于...”菜单项添加到系统菜单中的代码。看出了点什么——其实标题栏上的右键和关闭按钮可以通过系统菜单进行控制。所以我们实现去掉浮点时的参数和关闭按钮也可以从这里开始。首先我们要判断工具栏时浮点还是停靠的,这个可以通过WM_WINDOWPOSCHANGED消息得到通知。

  在Visual C++ 2005给某个类添加消息映射函数,同样在类视图里选择相应的类,然后在右边弹出属性设置界面,如果这个属性设置框没有出现,可以通过工具栏按钮打开界面:


  在属性设置界面中,存在过滤的工具栏,选择第五个的消息事件按钮,下面就列出了此类所有可用的消息,选择对应的消息,在右边的下拉框你添加消息响应函数即可。选择消息的时候最下面还会有消息的一些说明帮助我们理解这个消息。


  在WM_WINDOWPOSCHANGED消息函数里,我们先判断工具栏是否处于停靠状态,如果是浮动状态就去掉系统菜单。这里需要注意的时,虽然在界面上看工具栏时浮动非停靠的,实际上工具栏是停靠在一个CMiniFrameWnd框架里。我们这里所指的系统菜单就是这个CMiniFrameWnd的系统菜单。

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 );
  }
 }
}

  现在我们实现这2个基本的功能。在介绍的过程中,我特别的加入了一些图片,希望给那些对Visual C++ 2005不熟悉的朋友提供一些帮助。在后续的介绍中就不会再做介绍了。

上一页 [1][2]