把CPropertySheet的標籤放到下方時出現的錯誤

來源:互聯網
上載者:User

把CPropertySheet的標籤放到下方時出現的錯誤

這個是我的實現代碼:

 CRect rect;
 DWORD dwStyle = WS_CHILD | WS_VISIBLE;
 DWORD dwStyleEx = WS_EX_CONTROLPARENT;

 m_sheet.AddPage(&m_dlgFileBack);
 m_sheet.AddPage(&m_dlgFileDel);
 m_sheet.Create(this, dwStyle, dwStyleEx);
 
 CTabCtrl* pTabCtrl = m_sheet.GetTabControl();
 if(pTabCtrl)
 {
  pTabCtrl->ModifyStyle(0, TCS_BOTTOM);
 }

這樣啟動並執行時候就會出現下面的樣子,就是標籤只能看到小小的一條,其他的都看不到。

這個問題花了我很長時間,最後在準備發文章詢問的時候才突然想到原因
希望對遇到同樣問題的朋友有點協助

原來,建立CPropertySheet的時候,自動建立了一個CTabCtrl,我們可以用CPropertyShhet::GetTabControl()得到該TabCtrl的指標
如果要放到下面就要改變這個TabCtrl的大小,否則就會遮住屬性頁面標籤

完整的代碼如下:
 CRect rect;
 DWORD dwStyle = WS_CHILD | WS_VISIBLE;
 DWORD dwStyleEx = WS_EX_CONTROLPARENT;

 m_sheet.AddPage(&m_dlgFileBack);
 m_sheet.AddPage(&m_dlgFileDel);
 m_sheet.Create(this, dwStyle, dwStyleEx);
 
 CTabCtrl* pTabCtrl = m_sheet.GetTabControl();
 if(pTabCtrl)
 {
  pTabCtrl->ModifyStyle(0, TCS_BOTTOM);
 }

 // 調整屬性工作表到靜態框大小
 CWnd* pWnd = (CWnd*)GetDlgItem(IDC_STATIC_SHEET);
 if(pWnd)
 {
  CRect rect;
  pWnd->GetWindowRect(rect);
  ScreenToClient(rect);
  m_sheet.MoveWindow(rect);

//
// 調整TabCtrl大小
//
//  rect.top += 5;
//  rect.left += 5;
  rect.bottom -= 5;
  rect.right -= 10;
  if(pTabCtrl)
  {
   pTabCtrl->MoveWindow(rect);
  }

//
// 調整當前活動頁大小
//  
  rect.top += 5;
  rect.left += 5;
  rect.bottom -= 20;
  rect.right -= 20;
  
  CPropertyPage* page = m_sheet.GetActivePage();
  if(page)
  {
   page->MoveWindow(rect);
  }

  pWnd->ShowWindow(SW_HIDE);
 }
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.