当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 轻松实现类 MSDN 2002 界面(二)

VC++
在Dialog中使用Menu和Toolbar
如何定制对话框中的回车键
再谈 Windows 2000 “打开”文件对话框
Windows2000新型Open对话框的使用
Windows SDK 非模态对话框的消息处理
VC6中使用CHtmlView在对话框控制中显示HTML文件
Windows 2000 UI 新特点之四:其他类型的外壳扩展
Windows 2000 UI 新特点之二:自定义文件夹栏目
Windows 2000 UI 新特点之三:搜索管理器
Windows 2000 UI 新特点之一:信息条提示(Infotip)
数据库异步操作(ADODB)
VC++:小编谈自动注册数据源(DSN)
VC++:小编分享面向对象特征及其优点
VC++:VC++中Windows 3.x的协同多任务
VC++:小编浅谈VC++中的CRecordset类
VC++:小编浅谈ODBC概念,了解ODBC不在是难事
VC++:小编谈用ODBC创建表
VC++:小编浅谈用DAO创建表
VC++:浅析VC++中传统控件的控件通知消息
VC++:小编浅谈静态控件

VC++ 中的 轻松实现类 MSDN 2002 界面(二)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 54 ::
收藏到网摘: n/a

轻松实现类MSDN2002界面(二)


作者:Cuick

下载源代码


  前段时间在VC知识库发表了《轻松实现类MSDN2002界面》,仅仅实现了标签页的拖放、停靠、浮动等功能,而上面的图钉按钮也只是一个假的^_^。通过参考http://www.codeproject.com/docking/pinnabledock.asp的代码对程序进行了加强。现在已经可以实现自动隐藏了!!!效果图如下。(比较匆忙,程序还有很多不令人满意的地方,有待改进。上周刚接到新任务,不能继续做了,只好请大家来完善了,希望你把修改后的代码发我一份,谢谢)


图一

下面,我将一步步介绍怎样使用 DockPage、AutoHideBar。

一、通过AppWizard使用默认选项生成一个SDI界面工程。把src目录拷贝到你的工程文件夹下。

在菜单Project->Add to project->Files将六个文件加入工程中。在stdafx.h文件中加上:

#define WM_AUTOHIDE_ON	WM_USER+1#include ".\src\sizecbar.h"#include ".\src\AutoHideBar.h"
二、修改 MainFrame 的继承关系。

头文件修改为:class CMainFrame : public CautoHideFrame
cpp文件修改:IMPLEMENT_DYNCREATE(CMainFrame, CAutoHideFrame)
BEGIN_MESSAGE_MAP(CMainFrame, CAutoHideFrame)
三、 声明DockPageBar:
	CDockPageBar	m_wndDockPageBar
在OnCreate创建DockPageBar:
	if (!m_wndDockPageBar.Create(_T("DockPageBar"), this, CSize(230,260),TRUE,123))	{	TRACE0("Failed to create DockPageBar.\n");	return -1;	}	m_wndDockPageBar.SetBarStyle(m_wndDockPageBar.GetBarStyle() |	CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);	m_wndDockPageBar.EnableDocking (CBRS_ALIGN_ANY);
允许Frame停靠:
	EnableDocking(CBRS_ALIGN_ANY);
将DockPageBar停靠到左边:
	DockControlBar(&m_wndDockPageBar, AFX_IDW_DOCKBAR_LEFT);
四、好了,停靠 Bar 已经创建好了,并且具有了自动隐藏功能。下面你就可以忘停靠条里添加标签页了!!
	if (!m_wndEdit.Create(WS_CHILD|WS_VISIBLE|	ES_MULTILINE|ES_WANTRETURN|ES_AUTOVSCROLL,	CRect(0,0,0,0), this, 123))	return -1;	m_wndDockPageBar.AddPage(&m_wndEdit,"Edit",IDI_INDEX);
  OK,编译执行就可以了!!就这么简单。至于实现原理就不在这里讲了,有幸趣的话可以看源码,不过源码有点乱,现在实在是没有时间整理了!!自动隐藏功能的实现代码没有加注释,抱歉!!!
  还有,以前发表的《二进制浏览、编辑的实现》存在的Bug修改了一下,并加了注释,一并发上来。本程序匆忙中完成,不足之处请见凉。