2017-03-10 59 views
0

我有一個CDialog具有相同的控件組重複10次。有很多邏輯,所以我重構了對話框只有1個CDialog,但重複了10次。在運行時MFC控制唯一標識符

因此而不必使用標識10編輯框:

IDD_DIALOG DIALOGEX 0, 0, 680, 347 
    STYLE DS_SETFONT | WS_CHILD 
    FONT 10, "Segoe UI", 0, 0, 0x1 
    BEGIN 
     EDITTEXT IDC_EDT_NAME1,34,226,80,14,ES_AUTOHSCROLL|ES_READONLY 
     ... 
     EDITTEXT IDC_EDT_NAME10,34,226,80,14,ES_AUTOHSCROLL|ES_READONLY 
    END 

現在我有這樣的:

IDD_DIALOG DIALOGEX 0, 0, 680, 347 
    STYLE DS_SETFONT | WS_CHILD 
    FONT 10, "Segoe UI", 0, 0, 0x1 
    BEGIN 
     EDITTEXT IDC_EDT_NAME,34,226,80,14,ES_AUTOHSCROLL|ES_READONLY 
    END 

但我10次複製它在屏幕上。到目前爲止這麼好......我現在的問題是,我需要確定屏幕上的控件以使用自動化測試工具,並且控件ID始終與所有10個編輯框相同。除了Control ID之外,控制器中是否有任何屬性可用於唯一標識控件?

謝謝。

回答

0

使用單獨編號的子對話框,並將該控件放置在子對話框中。使用WS_CHILD。

有了這一招,你可以決定孩子的父母了。

在代碼項目中找到一個樣本和要求如何在對話框中嵌入一個子對話框。

https://www.codeproject.com/Articles/4408/Creating-embedded-dialogs-in-MFC

另一種方式是在創建控件後的只是設置新的ID。 CWnd :: SetDlgCtrlID將執行此操作。你可以保持他們獨特的在這條路上

+0

我的問題不是如何嵌入對話框...這是已經實現的和工作....我需要單獨確定這些嵌入對話框每個控制。測試團隊正在使用一種工具來識別所有使用ControlID的控件,現在所有這些ID都被複制。 –

+0

更改了我的答案 – xMRi