频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

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

来源: 作者: 出处:巧巧读书 2007-10-09 进入讨论组
选中按钮选项。//这使的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; 

  7、在菜单资源"查看"中加入菜单项"文件切换",ID值为ID_VIEW_TAB_BAR。在MainFrm.cpp中消息映射部分加入以下两行:

URL查看 http://www.qqread.com/wps/e353917.html进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章