WEB开发网
开发学院软件开发VC IE控制条的实现 阅读

IE控制条的实现

 2010-05-27 20:37:04 来源:WEB开发网   
核心提示:相信各位兄弟对微软公司的IE一定非常的熟悉,由其是其右侧可以显示和隐藏的收藏夹看上去非常的美观,IE控制条的实现,基于这点,我便做了这个关于IE控制条的示例工程,并设置m_bResize记录状态CRect t_CursorRc(m_VirClientRc);t_CursorRc.left = m_VirClientRc

相信各位兄弟对微软公司的IE一定非常的熟悉,由其是其右侧可以显示和隐藏的收藏夹看上去非常的美观,基于这点,我便做了这个关于IE控制条的示例工程,希望能够于大家共享,另外,由于我VC水平有限,所以在该工程中肯定会出现这样或是那样的问题,希望大家能够多多提出一些问题,我将会一如既往的将其一一更正。

该工程的运行结果如下:

为了方便大家对代码的阅读,下面对CIEBar类作一简单介绍:

一、IEBar界面的绘制

CIEBar从CDialogBar派生而来, 在OnPaint中调用了DrawFrm, DrawTitleTxt, DrawHideBtn三个函数

DrawFrm函数调用 MoveTo,LineTo函数绘制框架,DrawTitleTxt函数调用DrawText绘制标题文字,DrawHideBtn函数用于绘制关闭按钮,其关键代码如下:

// 添加tooltip
m_TipCtrl.AddTool(this, "关闭", t_HideBtnRc, 1);
// 绘制按钮
dc.SelectStockObject(NULL_BRUSH);
  if(m_bRaised)
    dc.Draw3dRect(&t_HideBtnRc,
           ::GetSysColor(COLOR_BTNHIGHLIGHT),
           ::GetSysColor(COLOR_BTNSHADOW));
  else if(m_bPressed)
      dc.Draw3dRect(&t_HideBtnRc,
             ::GetSysColor(COLOR_BTNSHADOW),
             ::GetSysColor(COLOR_BTNHIGHLIGHT));
// 显示关闭图标
HICON hIcon = AfxGetApp()->LoadIcon(IDI_HIDE_BTN);
ASSERT(hIcon);
::DrawIconEx(dc.m_hDC,
         t_HideBtnRc.left,
         t_HideBtnRc.top,
         hIcon,
         16, 16, 0,
          NULL,
         DI_NORMAL);

在OnMouseMove中调用DrawHideBtnFace判断鼠标是否在"关闭按钮"上绘制按钮的边框

二、IEBar的关闭实现

在OnLButtonUp中判断是否点在"关闭按钮"上,假如是则关闭,代码如下:

if(!m_HideBtnRc.IsRectEmpty())
    if(m_HideBtnRc.PtInRect(point))
      GetDockingFrame()->ShowControlBar(this, FALSE, FALSE);

三、IEBar尺寸调整的实现

在OnLButtonDown中判断是否按在可调边框上,并设置m_bResize记录状态

CRect t_CursorRc(m_VirClientRc);
  t_CursorRc.left = m_VirClientRc.right;
  t_CursorRc.right = t_CursorRc.left + IE_FRM_WIDTH;
  if(t_CursorRc.PtInRect(point))
    m_bResize = true;

在OnMouseMove中根据m_bResize的值来画拖动线。

当鼠标放开,在OnLButtonUp中调用ResizeIEBar对窗口进行移动操作。

1 2  下一页

Tags:IE 控制 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接