WEB开发网
开发学院软件开发VC 在MDI程序中实现类似WPS2000的文件切换标签 阅读

在MDI程序中实现类似WPS2000的文件切换标签

 2010-06-15 20:40:03 来源:WEB开发网   
核心提示:具体思路:在MDI程序中加入一个包含Tab标签的对话框条,并加入类CViewManager,在MDI程序中实现类似WPS2000的文件切换标签(2),该类用一个指针数组存放所有打开子窗口的视指针,用一个字符串数组存放文档标题,实现文件切换,编辑如下:void CMyTab::OnSelchange(NMHDR* pNM

具体思路:

在MDI程序中加入一个包含Tab标签的对话框条,并加入类CViewManager,该类用一个指针数组存放所有打开子窗口的视指针,用一个字符串数组存放文档标题。在视类的初始化函数OnInitUpdate() 里取得视指针及文档标题,存放到CViewManager的数组中,并在Tab标签中加入一项。在视类的析构函数里从Tab标签和CViewManager的数组中删除对应的项。切换Tab标签时,取得对应子窗口的指针,并以该指针为参数调用CMDIFrameWnd::MDIActivate()激活这个子窗口。下面请看具体的实现步骤: 

一、在VC6.0中,用向导创建一个MDI工程TabMDIDemo。在向导各步中均采用默认项

二、为工程加入Tab标签对话框条

1、在工作区的ResourceView中加入一个对话框模板IDD_TAB_DLG_BAR,按如下设置:

Style: Child
Border: Thin
去掉标题条和系统菜单选项;
字体:宋体,字号:10

在模板中加入一个Tab标签控件IDC_TAB,按如下设置:

选中按钮选项。//这使的Tab标签呈现按钮风格
选中Hot Track选项。//这使得鼠标移上时文字变蓝

仔细调整对话框条及Tab控件的位置、尺寸。创建主框架时,将以该模板创建出Tab标签对话框条。

2、利用类向导加入类CMyTab,派生于CTabCtrl。

3、利用类向导为类CMyTab添加TCN_SELCHANGE通知消息映射函数,实现文件切换,编辑如下:

void CMyTab::OnSelchange(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int idx = GetCurSel();
TC_ITEM ti;
ti.mask = TCIF_PARAM;
GetItem(idx, &ti);
CView * pView = (CView *) ti.lParam;
((CMDIFrameWnd *)AfxGetMainWnd())->MDIActivate((pView->GetParent())->GetParent());
*pResult = 0;
*pResult = 0;
}

4、利用类向导为类CMyTab添加WM_LBUTTONDBLCLK消息映射函数,实现双击时最大化或恢复子窗口,编辑如下:

void CMyTab::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
int idx = GetCurSel();
TC_ITEM ti;
ti.mask = TCIF_PARAM;
GetItem(idx, &ti);
CView * pView = (CView *) ti.lParam;
((CMDIFrameWnd *)AfxGetMainWnd())->MDIActivate((pView->GetParent())->GetParent());
// maximize or restore MDIChild window based on its current state
BOOL bMaximize=FALSE;
CWnd* pActiveWnd=((CMDIFrameWnd *)AfxGetMainWnd())->MDIGetActive(&bMaximize);
if(bMaximize)
((CMDIFrameWnd *)AfxGetMainWnd())->MDIRestore(pActiveWnd);
else
((CMDIFrameWnd *)AfxGetMainWnd())->MDIMaximize(pActiveWnd);
}

5、在MainFrm.h中加入:#include "MyTab.h"

6、为主框架类CMainFrame加入如下成员变量:

protected:
CDialogBar m_wndTabBar;
public:
CMyTab m_MyTab;

上一页  1 2 3 4  下一页

Tags:MDI 程序 实现

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