2016-12-15 61 views
0

假設我們有一些DialogDoDataExchange函數,我們有一些DDX_Text調用與某些文本字段一起使用。 讓我們看到一個原型:C++ - 在DDX_Text函數中,nIDC應該是唯一的嗎?

void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, CString& value); 

我新的Windows對話框,該動態數據交換技工,我還沒有找到答案不夠快。 東西告訴我,nIDC應該是獨特的價值,但實際上在實際項目中,我發現這並非總是如此。

所以問題是:我們什麼時候可以有nIDC一個獨特的,什麼時候沒有?我們應該還是不應該?

+5

'nIDC'用於識別控制,所以它必須是在對話框中唯一的,但它不必是全局唯一的(在不同的對話框)。或者你的獨特意味着什麼? –

+0

@KarstenKoop你只是回答了我的問題:)謝謝。 – Archont

+2

只有這些控件的控件ID必須是唯一的,**您的**代碼需要通過ID來識別。例如,參與MFC數據交換基礎設施的控件就是這種情況。另一個例子是按鈕控件,其中ID作爲「WM_COMMAND」消息的一部分傳遞,即按鈕生成。儘管如此,沒有任何東西可以讓你通過窗口句柄識別控件,或者根本不識別控件(靜態控件是後者的一個衆所周知的例子,它們通常具有相同的IDC_STATIC分配)。 – IInspectable

回答

0

很明顯,nIDC必須具有唯一性。如果你有兩個或更多具有相同價值的資源,你永遠不想陷入這種境地。

我自己在DoDataExchange之外經常使用DDX_Text來讀取/寫入控制值。從控制讀取到的值實施例:

UINT num; 
CDataExchange dx(this, TRUE); 
DDX_Text(&dx, IDC_EDIT1, num); 
相關問題