IE控制条的实现

2016-01-29 11:52 2 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判断鼠标是否在"关闭按钮"上绘制按钮的边框

(本文来源于图老师网站,更多请访问https://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的建设者们,感谢他们能够为我们提供这么优秀的交流空间。

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

延伸阅读
网络人实现多对多控制 远程控制技术揭秘 一、网络人远程控制技术: 网络人远程控制软件是国内最专业的企业远程管理、远程办公、远程监控软件。它实现了内网穿透(支持局域网对局域网的控制),在任何能上网的地方使用本地电脑就能管理和监控分布于不同地点的多台电脑,如公司内不同部门的员工电脑、各个连锁店的电脑等。同时它还能实现...
向日葵远程控制软件如何实现远程控制 向日葵远程控制拥有五秒快速而又强劲的内网穿透功力,融合了微软RDP远程桌面(3389),用户可以轻松在向日葵远程桌面协议和微软RDP协议中自由切换,享受最佳的远程桌面体验,那向日葵远程控制软件如何实现远程控制、管理、操作等一系列项目呢? 要想实现远控,需要先在远程主机电脑上安装向日葵远程...
实现标题条的显示与隐藏 作者:rockieyung 下载本文示例源代码 有时候为了实际的显示面积大一些或其他的一些原因需要对标题条进行隐藏或显示。本文使用一个简单的例子,说明如何在MFC应用程序的框架下来实现它。其中使用API的方法也可用于其他的Windows应用开发环境。 CWnd类提供了一个函数Mod...
template class CToolbar { public: CToolbar(); void CreateToolbar(HWND hParent);// 创建工具条 void AddButtons();// 逐个加入按钮 void DestroyToolbar();// 撤消工具条 LRESULT OnToolbarNeedText(WPARAM, LPNMHDR pnmh, BOOL&); // 工具条上按钮的提示信息 protected: ...
标签: ASP
  广州地铁运营事业总部计算机中心 周振喜 吕利 着计算机应用的发展,越来越多的数据被存储在中心机房的服务器上,由于一些管理人员的地理位置不在中心机房,于是带来了数据的远程管理问题。本文以广州地铁运营事业总部的图书资料管理系统为例,介绍利用ASP技术实现这种数据库远程控制的具体方法和步骤。 问题的提出 广州地铁运营事业...

经验教程

643

收藏

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