且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

FTP搜索工具学习笔记——属性页控件类

更新时间:2022-05-18 04:22:34

利用MFC类库中的CTabCtrl类为基础,实现属性页控件类。
   
   class CPropertyPages:public CObject    ///////描述属性页页面
   {
        public:
               CString m_strTitle;   //属性页标签名
               CDialog *m_pDialogPage;     //属性页对话框指针
               CRect   m_Rect;           //属性页区域
   }
 
   class CSheetTabCtrl::CTabCtrl    ////////属性页类  
   {  
        public:
               CRect m_Rect;      //保存属性页区域
               UINT  m_nCtrlID;   //属性页ID
               int   m_nPages;    //记录属性页控件上页面的个数
               int   m_nActPage;  //用来记录当前活动页面的索引
               CObArray m_Dialogs;   //所有属性页面的指针  
   }
   
为了将属性页控件上的制定页面设置为活动转台,为CSheetTabCtrl添加成员函数
SetActivePage(int nPage)。
    
   int CSheetTabCtrl::SetActivePage(int nPage)
   {
       CPropertyPages  *pPropPage;     //临时指针
       int   nN; 
       if((nPage<0)||(nPage>m_nPages))
           nPage=0;
       //得到当前活动页面指针
       pPropPage=(CPropertyPages *)m_Dialogs.GetAt(m_nActPage);
       //将当前活动页面隐藏
       nN=pPropPage->m_pDialogPage->SetWindowPos(NULL,
                 pPropPage->m_Rect.left,pPropPage->m_Rect.top,0,0,
                   SWP_HIDEWINDOW|SWP_NOSIZE);
       //得到指定页面指针
       pPropPage=(CPropertyPages *)m_Dialogs.GetAt(nPage);
       //将指定页面显示出来
       nN=pPropPage->m_pDialogPage->SetWindowPos(NULL,
                 pPropPage->m_Rect.left,pPropPage->m_Rect.top,0,0,
                   SWP_SHOWWINDOW|SWP_NOSIZE);
       m_nActPage=nPage;      //保存当前活动页面索引
       SetCurSel(m_nActPage);    //设置选中状态
   
       return TRUE;
   }
当单击属性页控件是相应标签时,只要调用此函数就可以将相应页面设置为活动状态。
 

本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/163745,如需转载请自行联系原作者