有一个CPropertySheet对象,两个CPropertyPage对象,用AddPage()将两个CPropertyPage对象 page1,page2加入到CPropertySheet里。如何改变page1和page2的大小呢?我在OnInitDialog()里用了page1.MoveWindow(),page2.MoveWindow()有错误?该如何来实现改变他们的大小呢?

解决方案 »

  1.   

    page1,page2是CPropertySheet的子窗口,受它限制,你应该调整CPropertySheet的大小...
      

  2.   

    使用CPropertySheet时,子对话框是在第1次显示前才创建的,在子对话框还没有创建之前,对其MoveWindow当然会出错。
    可以重载CPropertyPage::OnSetActive函数来处理。
      

  3.   

    如果是静态创建的,那么CPropertySheet的大小会由CPropertyPage中较大的那个决定
    用代码动态创建,不太清楚,关注!!!
      

  4.   

    用过静态绑定,sheet的大小会由page中较大的来决定。
      

  5.   

    我是用CTabCtrl控件添加属性页的,使属性页在控件范围之内
    在主对话框的OnInitDialog()内初始化 : 
    // TODO: Add extra initialization here //初始化m_tab控件 
    m_tab.InsertItem(0," 呵呵,茂叶工作室 "); 
    m_tab.InsertItem(1," 嘻嘻 "); 
    m_tab.InsertItem(2," 哈哈,www.maoyeah.com "); //建立属性页各页 
    page0.Create(IDD_DIALOG0,GetDlgItem(IDC_TAB1)); 
    page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1)); 
    page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB1)); 
    //设置页面的位置在m_tab控件范围内 
    CRect rect; 
    m_tab.GetClientRect(&rect); 
    rect.top+=20; 
    rect.bottom-=4; 
    rect.left+=4; 
    rect.right-=4; 
    page0.MoveWindow(&rect); 
    page1.MoveWindow(&rect); 
    page2.MoveWindow(&rect); m_tab控件属性页选择时显示各页
    void CMy3Dlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) 

    // TODO: Add your control notification handler code here 
    int CurSel; 
    CurSel=m_tab.GetCurSel(); 
    switch(CurSel) 

    case 0: 
    page0.ShowWindow(TRUE); 
    page1.ShowWindow(FALSE); 
    page2.ShowWindow(FALSE); 
    break; 
    case 1: 
    page0.ShowWindow(FALSE); 
    page1.ShowWindow(TRUE); 
    page2.ShowWindow(FALSE); 
    break; 
    case 2: 
    page0.ShowWindow(FALSE); 
    page1.ShowWindow(FALSE); 
    page2.ShowWindow(TRUE); 
    break; 
    default: ; 
    } *pResult = 0; 
    }