[英]How to ensure a CPropertyPage has been created BEFORE user clicks on it in a CPropertySheet?
我已經在MFC中創建了一個基於CPropertySheet
的模式對話框(使用從CPropertySheet
/ CPropertyPage
派生的BCGSoft類)。 當用戶在CPropertyPage
的其中一個中執行特定操作時,我想啟用/禁用其他CPropertyPage
的控件。
假設用戶已經單擊選項卡以實例化第二個CPropertyPage
,這將很好地工作。 但是,MFC將第二個CPropertyPage
的創建延遲到用戶激活它為止。 在這種情況下,第二個CPropertyPage
中的控件不存在,並且MFC引發錯誤。
為了克服這個問題,我想通過在CPropertySheet
OnInitDialog()
調用必要的函數來確保所有CPropertyPage
都存在。 有人可以解釋一下該怎么做嗎?
調用函數CPropertyPage::SetActivePage()
(當然是在實際的CPropertyPage
對象上)可以解決問題。
聽起來您的數據沒有與UI分開(不好的事情)。 最好重新設計業務邏輯,以將數據與UI分開,以便即使沒有UI也可以填充初始數據。
如果需要,請在OnInitDialog 中將活動頁面設置為循環中的每個頁面 ,然后激活默認頁面。
與其嘗試立即啟用控件,不如在頁面的OnActivate方法中進行操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.