在visualc6中工具条的新特色

上传人:xiao****1972 文档编号:84196050 上传时间:2019-03-03 格式:DOC 页数:11 大小:80KB
返回 下载 相关 举报
在visualc6中工具条的新特色_第1页
第1页 / 共11页
在visualc6中工具条的新特色_第2页
第2页 / 共11页
在visualc6中工具条的新特色_第3页
第3页 / 共11页
在visualc6中工具条的新特色_第4页
第4页 / 共11页
在visualc6中工具条的新特色_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《在visualc6中工具条的新特色》由会员分享,可在线阅读,更多相关《在visualc6中工具条的新特色(11页珍藏版)》请在金锄头文库上搜索。

1、在 Visual C+ 6 中工具条的新特色作者:Dave Schmitt 微软在 C+6.0 预览版几个月了。正式版预计到今年年底发布。同时,预览版显示出版本6将包含大量的改进和提高,包括支持 Internet控件,例如扁平工具条等。虽然改进的控件包与 Internet无关,但它首先出现在 Internet Explorer中,因此它就被取做这个名字了。事实上,官方发布的预览版的标题是“针对 Internet Explorer 4.0的 Visual C+ 5.0技术预览”。 在以前关于MFC工具条类的讨论专题中,我曾答应提供一个在版本 6中工具条的外观演示。有一个很好的消息,那就是你现在

2、用 CToolBar所作的所有工作在新的版本中都是有效的,包括那些在以前的栏目中所描述的一些扩展功能。因此,你将很容易修改现存的程序以获得象Internet Explorer和Visual Studio中那样“酷”的界面。此外,并没有什么坏消息。工具条的新特色 早在版本4中, CToolBar就已被 MFC库完全实现了。一旦公用控件动态链接库(命名为comctl32.dll )变得无所不在了,CToolBar就成了如今已包含在操作系统中的工具条控件的代名词了。然而, CToolBar并没有揭示公用工具条控件的所有能力。如今,通过 CreateEx()函数,它成功了。 公用控件动态链接库现在包含

3、了至少三类风格:最初的、在 Internet Explorer 3.0中加入的以及在 Internet Explorer 4.0中加入的。虽然这些版本理论上是向下兼容的,但某些专业人员曾写出一些不能在后来版本中正常运行的应用程序,这可能是这些程序采用了一些没有公开的功能,而这些功能并没有被包含在所有的版本中。 Visual C+程序员没有这样的经历,因为在 Visual C+4.0或 5.0中comctl32.dll并不是一个可以再分发的组件,它在安装 Internet Explorer时被更新,因此 MFC程序员无法依靠最新版本的某些功能来用于他们的程序。这就是 CToolBar仅仅具有最初

4、的 DLL的有限功能的原因。 CToolBar能够实现最新的特色意味着微软将在Visual C+6.0中包含最新的DLL并将其作为一个可以再分发的组件。 绝大多数新特色将由在调用CreateEx() 和其它CToolBar成员函数时指定的新的风格标志来确定。下面是 commctrl.h的一部分,它定义了 TBSTYLE类标识符:#define TBSTYLE_BUTTON 0x0000#define TBSTYLE_SEP 0x0001#define TBSTYLE_CHECK 0x0002#define TBSTYLE_GROUP 0x0004#define TBSTYLE_CHECKGRO

5、UP (TBSTYLE_GROUP | TBSTYLE_CHECK)#if (_WIN32_IE = 0x0300)#define TBSTYLE_DROPDOWN 0x0008#endif#if (_WIN32_IE = 0x0400)#define TBSTYLE_AUTOSIZE 0x0010#define TBSTYLE_NOPREFIX 0x0020 #endif#define TBSTYLE_TOOLTIPS 0x0100#define TBSTYLE_WRAPABLE 0x0200#define TBSTYLE_ALTDRAG 0x0400#if (_WIN32_IE = 0x0

6、300)#define TBSTYLE_FLAT 0x0800#define TBSTYLE_LIST 0x1000#define TBSTYLE_CUSTOMERASE 0x2000#endif#if (_WIN32_IE = 0x0400)#define TBSTYLE_REGISTERDROP 0x4000#define TBSTYLE_TRANSPARENT 0x8000#define TBSTYLE_EX_DRAWDDARROWS 0x00000001#endif 你会注意到其中的一些采用了条件编译,依赖于 _WIN32_IE的值,它缺省指的是 Internet Explorer 4

7、.0(即取值为 0x0400)。对于 Internet Explorer 3.0(即取值为 0x0300)以前的版本,大多数的 TBSTYLE标识符指的是按钮或是一组按钮。 Internet Explorer 3.0引入了扁平钮、文本标签、下拉列表和自定义绘制。 Internet Explorer 4.0增强了下拉列表和自定义绘制功能,并且增加了支持 OLE拖动目标到一个工具条。 FACE=System,黑体 LANG=ZH-CN SIZE=4 COLOR=#000080扁平钮和把手 在过去的 18个月中我常常被问及该如何获得象 Internet Explorer和 Visual Studio

8、中的工具条一样不使用浮雕按钮而是用扁平钮并且带有便于移动和定位的把手那样酷的界面。这些特色并不被 MFC所支持,因此最简单获取的方法就是购买一个扩展库。而对于 Visual C+ 6.0来说却无须多此一举,因为它使得 CToolBar类实现了对扁平钮、把手和其它新的视觉效果的支持。 在预览版中,AppWizard FACE=System,黑体 LANG=ZH-CN并不会自动包括这些新特色,但它们却很容易被加入。表 1显示了 AppWizard创建的主框架窗口的 OnCreate()函数,表 2显示了需要做哪些修改以获得具有扁平钮和把手的工具条。图 1显示了表 1创建出的工具条,而图 2显示出了

9、表 2实现的工具条。表1: CMainFrame:OnCreate as generated by AppWizard int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if(CMDIFrameWnd:OnCreate(lpCreateStruct) = -1) return -1;if(!m_wndToolBar.Create(this) | !m_wndToolBar.LoadToolBar(IDR_MAINFRAME) TRACE0(Failed to create toolbarn); return -1; / fail to

10、create if(!m_wndStatusBar.Create(this) | !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators图1表2: Adding flat buttons and the gripperint CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if(CMDIFrameWnd:OnCreate(lpCreateStruct) = -1) return -1;if(!m_wndToolBar.CreateEx(this) | !m_wndToolBar.

11、LoadToolBar(IDR_MAINFRAME) TRACE0(Failed to create toolbarn); return -1; / fail to create if(!m_wndStatusBar.Create(this) | !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT) TRACE0(Failed to create status barn); return -1; / fail to create / TODO: Remove this if you dont want

12、 tool tips or a resizeable toolbarm_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_GRIPPER | CBRS_BORDER_3D | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);/ TODO: Delete these three lines if you dont want the toolbar to/ be dockablem_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDockin

13、g(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);return 0;图2 为了作出扁平按钮我必须使用CreateEx()来代替 Create()。这个新的函数在afxext.h中声明:BOOL CreateEx ( CWnd* pParentWnd, / parent window DWORD dwCtrlStyle = TBSTYLE_FLAT, / extended style DWORD dwStyle = / style WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP, CRect rcBorders = CR

14、ect(0,0,0,0), / border rectangle UINT nID = AFX_IDW_TOOLBAR / identifier ); 因为扩展风格缺省指的就是TBSTYLE_FLAT,因此我要得到扁平按钮就只需要简单地将 AppWizard形成的代码中的Create()改为 CreateEx()即可。我将在后面实现其它的扩展风格。 为了获得把手,我必须在调用SetBarStyle()函数时包含 CBRS_GRIPPER标志,参看表2。这是 CControlBar类的一个新风格,而CToolBar类是从它继承而来的。 请注意到我也加入了CBRS_BORDER_3D标志,这是为了修正一个未知的绘制问题,该问题将会在工具条的边缘绘制一些多余的点。这也许意味着预览版确实有这个问题,因为一旦我将 3D标志加入就立即解决了并且也似乎没有影响到别的什么。 上面所作的两个简单的改变是使得一个已存程序获得酷界面的最省力的方法。在一个程序具有了扁平钮和把手的同时,它也不会发生不应有的其它改变。文本标签 Internet Explorer使得普通的工具条具有了大按钮和取代了

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号