2016-06-07 43 views
0

我更多的使用比MFC QT間期的多個不同的對象,但我有以下關注:使用1個獨特的MFC對話框同一類

我創建4個按鈕的面板,所有這些按鈕具有相同的目的,如果你點擊它們,它會打開另一個對話框。

此對話框的4個按鈕的佈局完全相同。

但是,由於對話框通過enum {IDD = ...}關聯到一個類,我想知道是否實際上可以爲多個對象使用相同的對話框模板,或者如果我必須實際創建4個對話框用不同的ID做基本相同的事情?

回答

1

在聲明enum { IDD = <resource ID> };資源ID定義了一個編譯時間常數,即傳遞給CDialog -c'tor(默認1))從對話框模板資源構建本地控件。然後將其傳遞給其中一個對話框創建功能(CreateDialog等)以完成繁重的工作。

使用多個CDialog派生類的對話框模板沒有限制。


1) 您可以直接通過對話框模板資源ID在您的自定義類實現CDialog -c'tor,並不需要使用枚舉值IDD標準。

+0

我沒有把它作爲一個資源,你的解釋讓事情變得更加清晰 – trexgris

+0

@Ajay:'enum'只是你的平均枚舉值(我不知道你是什麼意思*「不是一流的C++」*;沒有什麼特別壯觀的)。如果多個類定義了一個具有相同名稱的成員,那麼這不違反單個定義規則。成員被限定在他們的封閉類中。換句話說:每個'CDialog'派生的類都可以有一個名爲'IDD'的類成員(數十年來這樣做)。無論如何,任何數量的對話框實現都可以使用相同的對話框模板資源。 – IInspectable

相關問題