模態屬性與非模態屬性頁面

來源:互聯網
上載者:User
在資源編輯器設定了屬性頁面之後,就可以通過ClassWizard建立一個CPropertyPage衍生類別了,其方式與建立CDialog衍生類別非常相似,惟一的區別在於不是選擇CDialog而是選擇 CPropertyPage作為基類。為了建立和顯示一個模態屬性單,通常會在棧上聲明一個CPropertySheet對象,並調用其DoModal函數(就像CDialog對象所做的那樣)。但是,對於屬性頁面則需要在調用屬性單的DoModal函數之前給屬性單添加相應的屬性頁面:       protected:
            CPropertySheet m_sheet;
            CMyPropertyPage1 m_pageMyPage1; //CMyPropertyPage1是自己聲明的基於CPropertyPage的類
      然後再在OnInitDialog()函數中調用
          sheet.AddPage(&m_pageMyPage1);
          sheet.DoModal();
     顯示無模態屬性單和顯示模態屬性單的方法基本相同,主要差別在於不是使用DoModal()函數,而是使用CPropertySheet::Create()函數顯示內容單。但是要注意:在負責顯示內容單的函數內,檢查屬性單的HWND成員變數,確定是否已經建立了該屬性單,如果還沒有建立該屬性單,則執行個體化各頁面對象,通過AddPage把他們添加到屬性單中,然後再調用Create顯示該屬性單;如果已經構造了屬性單,則調用BringWindowToTop()函數就能很容易的找的襖屬性單了,代碼如下:
      HWND hwnd = g_sheet.GetSafeHwnd();
      if (!hwnd)
      {
          CPropPage1* p1 = new CPropPage1();
          CPropPage2* p2 = new CPropPage2();
          sheet.AddPage(p1);
          sheet.Create();
     }
     else
     {
           sheet.BringWindowToTop();
     }
    當要從記憶體中清除這些頁面是可以重載屬性單類的PostNcDestroy()虛函數:
    PostNcDestroy()
    {
         int nPages = GetPageCount();
         for (int i = (nPages - 1); i >= 0; i--)
         {
               CPropertyPage* pPage = GetPage(i);
               ASSERT(pPage);
              if (pPage)
              {
                     delete pPage;
                     RemovePage(i);
                     TRACE("[CMyPropertySheet::OnDestroy] Removing page %ld/n", i);
              }
         }
       CPropertySheet::PostNcDestroy();
      }
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.