收藏本站 
广告服务 
网站地图 
>> 我们从网络和杂志上收集了近100000余篇各类电脑技术、网络技术、软件技术等方面的文章教程,我们的收录原则:不是精华拒不收录!
先飞电脑技术网技术文章
VC++中Tab键控制问题的解决办法
[ 作者:佚名    转贴自:网络转载    阅读次数:50    更新时间:2007-3-21 14:19:00   录入:刘光勇 ]         
      做作vc界面的都知道,如果在遇到多个控件用tab分组显示时是一件很繁琐的事情,同时代码量也特别的大下面是我今天下午刚刚想出的一个自己认为满意的解决办法。
  主要思路如下:

  做一个类CTabContainer,在初始化的时候确定将控件id分成几组(也就是几个tab标签),然后为每一组做一个链表分别保存每一个tab下属的控件id集。这样的话,只需在对话框初始化时做好一个基本的设定,然后在OnSelchangeTab1写上m_pTabContainer->Show(m_tab.GetCurSel());就可以了。
  
  类的使用方法:
  
  在OnInitDialog()里面

  m_pTabContainer->Init(3,this);//3个tab标签按钮,this对话框指针。
  m_pTabContainer->AddCtrlId(0,IDC_BUTTON1);//IDC_BUTTON1加到第一组tab当中
  m_pTabContainer->AddCtrlId(0,IDC_BUTTON4);//下面类似
  m_pTabContainer->AddCtrlId(0,IDC_BUTTON5);
  m_pTabContainer->AddCtrlId(1,IDC_BUTTON2);
  m_pTabContainer->AddCtrlId(1,IDC_BUTTON6);
  m_pTabContainer->AddCtrlId(2,IDC_BUTTON3);
  m_pTabContainer->AddCtrlId(2,IDC_BUTTON7);
  m_pTabContainer->AddCtrlId(2,IDC_BUTTON8);
  m_pTabContainer->Show(0);//默认显示第一个标签下面的控件

  在控件TAb的事件OnSelchangeTab1

  m_pTabContainer->Show(m_tab.GetCurSel());即可

  另附类CTabContainer的源代码:

  classCTabContainer
  {
   public:
    CTabContainer();
    virtual~CTabContainer();
    CTabContainer(constCTabContainer&tabContainer);
    constCTabContainer&operator=(constCTabContainer&tabContainer);
  
    BOOLInit(intnTabs,CWnd*pParent);
  
    file://初始化tab,nTabs代表有几个按扭
    BOOLAddCtrlId(intnTab,intnID);//将id添加到哪个tab中
    BOOLDelete(intnTab,intnID);//删除id
    voidShow(intnTab);//当前显示哪个tab
    voidClear(void);//释放内存和清理工作
  
   protected:
    typedefCListCIntList;
    CIntList*m_pIDGroups;//指向链表的指针
    intm_nLCount;//链表的个数
    CWnd*m_pParent;//父窗体指针
  };
上一篇:用VC++开发数据库应用程序(四)  下一篇: 用VC++开发数据库应用程序(二)  

网站主页 | 收藏本页 | 联系我们 | 广告服务 | 站点地图 | 会员注册 | 招聘信息 | 内容指正

联系QQ:先飞电脑技术网站事务联系QQ,点击可以直接留言. 32933427 电话:13710542091 [世界排名] 鄂ICP备05005890号