我用了一个CViewForm类建立了一个单文档程序,想在客户区加上属性页,如何加
请大虾指点。最好有例子代码。都有什么方式?是不是可以用CCtrlTAb? 怎么用?

解决方案 »

  1.   

    加个对话框好了,在对话框上添加属性页
    然后再给属性页加页面,要用的话给你个类,比CCtrlTab好用点。
    #define MAXPAGE 16
    class CTabSheet : public CTabCtrl
    {
    // Construction
    public:
    CTabSheet();// Attributes
    public:// Operations
    public:// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CTabSheet)
    //}}AFX_VIRTUAL// Implementation
    public:
    int GetCurSel();
    int SetCurSel(int nItem);
    void Show();
    void SetRect();
    BOOL AddPage(LPCTSTR title, CDialog *pDialog, UINT ID);
    virtual ~CTabSheet(); // Generated message map functions
    protected:
    LPCTSTR m_Title[MAXPAGE];
    UINT m_IDD[MAXPAGE];
    CDialog* m_pPages[MAXPAGE];
    int m_nNumOfPages;
    int m_nCurrentPage;
    //{{AFX_MSG(CTabSheet)
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point); // NOTE - the ClassWizard will add and remove member functions here.
    //}}AFX_MSG DECLARE_MESSAGE_MAP()
    };
    #include "stdafx.h"
    #include "TabSheet.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif/////////////////////////////////////////////////////////////////////////////
    // CTabSheetCTabSheet::CTabSheet()
    {
        m_nNumOfPages = 0;
    m_nCurrentPage = 0;
    }CTabSheet::~CTabSheet()
    {
    }
    BEGIN_MESSAGE_MAP(CTabSheet, CTabCtrl)
    //{{AFX_MSG_MAP(CTabSheet)
    ON_WM_LBUTTONDOWN() // NOTE - the ClassWizard will add and remove mapping macros here.
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
    // CTabSheet message handlers
    BOOL CTabSheet::AddPage(LPCTSTR title, CDialog *pDialog, UINT ID)
    {
    if( MAXPAGE == m_nNumOfPages )
    return FALSE; m_nNumOfPages++; m_pPages[m_nNumOfPages-1] = pDialog;
    m_IDD[m_nNumOfPages-1] = ID;
    m_Title[m_nNumOfPages-1] = title; return TRUE;
    }void CTabSheet::SetRect()
    {
    CRect tabRect, itemRect;
    int nX, nY, nXc, nYc; GetClientRect(&tabRect);
    GetItemRect(0, &itemRect); nX=itemRect.left;
    nY=itemRect.bottom+1;
    nXc=tabRect.right-itemRect.left-2;
    nYc=tabRect.bottom-nY-2; m_pPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);
    for( int nCount=1; nCount < m_nNumOfPages; nCount++ )
    m_pPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);}void CTabSheet::Show()
    {
    for( int i=0; i < m_nNumOfPages; i++ )
    {
    m_pPages[i]->Create( m_IDD[i], this );
    InsertItem( i, m_Title[i] );
    } m_pPages[0]->ShowWindow(SW_SHOW);
    for( i=1; i < m_nNumOfPages; i++)
    m_pPages[i]->ShowWindow(SW_HIDE); SetRect();}void CTabSheet::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    CTabCtrl::OnLButtonDown(nFlags, point); if(m_nCurrentPage != GetCurFocus())
    {
    m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);
    m_nCurrentPage=GetCurFocus();
    m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);
    // m_pPages[m_nCurrentPage]->SetFocus();
    }
    }
    int CTabSheet::SetCurSel(int nItem)
    {
    if( nItem < 0 || nItem >= m_nNumOfPages)
    return -1; int ret = m_nCurrentPage; if (m_nCurrentPage != nItem)
    {
    m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);
    m_nCurrentPage = nItem;
    m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);
    // m_pPages[m_nCurrentPage]->SetFocus();
    CTabCtrl::SetCurSel(nItem);
    } return ret;
    }int CTabSheet::GetCurSel()
    {
    return CTabCtrl::GetCurSel();
    }
      

  2.   

    http://www.codeproject.com/docview/cpropertyview.asp
      

  3.   

    jennifergiant(孟琦) ( )大哥够强,不过代码太长,像我和楼主这样的菜鸟看了太累,我用MFC做的属性页对话框方法如下:
    1,增加tab control控件
    2,添加OnInitDialog()和OnSelchange Tab()函数
    3,函数代码若干(不长,但不愿打字,呵呵)主要的是GetCurSel()函数的用法
    楼主要代码说一声,e-mail:[email protected]
      

  4.   

    http://www.vckbase.com/document/finddoc.asp
      

  5.   

    http://www.vckbase.com/document/viewdoc.asp?id=427
      

  6.   

    http://www.vckbase.com/document/viewdoc.asp?id=398
      

  7.   

    谢谢了
    发代码给我吧
    [email protected]
      

  8.   

    http://www.vckbase.com/document/viewdoc.asp?id=398有文章和代码下载啊,很方便的