簡體   English   中英

在用戶單擊CPropertySheet之前,如何確保已創建CPropertyPage?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM