IE控制条的实现

2016-01-29 11:52 4 1 收藏

IE控制条的实现,IE控制条的实现

【 tulaoshi.com - C语言心得技巧 】

IE控制条的实现
作者:樊文生(合肥)

下载本文源代码

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


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

一、IEBar界面的绘制

CIEBar从CDialogBar派生而来, 在OnPaint中调用了DrawFrm, DrawTitleTxt, DrawHideBtn三个函数
DrawFrm函数调用 MoveTo,LineTo函数绘制框架,DrawTitleTxt函数调用DrawText绘制标题文字,DrawHideBtn函数用于绘制关闭按钮,其关键代码如下:

// 添加tooltipm_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判断鼠标是否在"关闭按钮"上绘制按钮的边框

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com) 二、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对窗口进行移动操作。

四、CIEBar的使用


CIEBar的使用非常简单,在CMainFrame中定义一个变量后,在CMainFrame::OnCreate中用如下代码创建并加入树形控件:
if(!m_IEBar.Create(this, IDD_IEBAR, CBRS_LEFT, 100) || !m_IEBar.InitIEBar())return -1;CTreeCtrl* pTreeCtrl = m_IEBar.GetTreeCtrl();ASSERT(pTreeCtrl);// modify tree stylespTreeCtrl->ModifyStyle(NULL, TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS);HTREEITEM t_hRoot = pTreeCtrl->InsertItem("root");for(int i=0; i<40; i++){CString t_ItemStr;t_ItemStr.Format("node %d", i+1);pTreeCtrl->InsertItem(t_ItemStr, t_hRoot);}m_IEBar.EnableDocking(CBRS_ORIENT_HORZ);DockControlBar(&m_IEBar);

因为该工程是模仿IE浏览器做的,所一其大部分的操作风格都和IE浏览器非常的相似,例如当我门用鼠标调整IE控制条的宽度时,我们最多只能将其拉伸到工作区的一半大小为止,并且可以通过“查看”菜单中的“IE控制条”选项来显示和隐藏。
最后我想感谢vckbase的建设者们,感谢他们能够为我们提供这么优秀的交流空间。

来源:http://www.tulaoshi.com/n/20160129/1483698.html

延伸阅读
标签: Web开发
在打印HTML页面时控制分页,可以使用层来动态控制。 具体的方法是,在需要分页的地方动态添加如下代码: div style="PAGE-BREAK-AFTER: always"/div
标签: 电脑入门
Mac OS X的光盘播放控制条是用来设置光盘播放的状态,可以设置成自动播放,重复播放,并且可以推出光盘,使用起来比苹果菜单项目还要方便。
标签: 浏览器
移动版IE9的10条使用小贴士 1、浏览网页更加给力:用户可以通过双击屏幕来缩放所浏览的页面,之后再双击两下屏幕便可回复原始大小。 2、快速查看地图和拨打电话:当用户在浏览的网页中的电话号码或地点名称以链接形式显现时,用户可通过点击这些链接进行快速拨号或开启地图查找。(并不是所有的地址和电话号码都支持) 3、查看...
标签: Web开发
效果如下: 代码如下: !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" html head titleAjax Progress Bar/title script type="text/javascript" var xmlHttp; var key; var bar_color = 'gray';//进度条的颜色 var span_id = "block"; var clear = "   "; function createXMLHttpRequest()//创建...
标签: Web开发
漂亮的代码是漂亮网站的基础,优秀的 CSS 只存在与同样优秀的 HTML 之上,干净的,语义的 HTML 代码让一个网站更健壮。本文讲述了12个实现干净Web设计代码的定律,适合于任何从事Web设计的人。 1. Strict DOCTYPE 要做就做对的。不管是 HTML 4.01 还是 XHTML 1.0,它们都提供 Strict 模式,使用 Strict 模式可以保证我们的代码不隐藏任何错误...

经验教程

298

收藏

91
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部