2017-03-10 2 views
0

Ich hatte einen CDialog mit der gleichen Gruppe von Steuerelementen 10 Mal wiederholt. Es gab eine Menge Logik, so dass ich den Dialog so umstrukturierte, dass ich nur einen CDialog hatte, aber 10 Mal wiederholt wurde.MFC-Steuerelement eindeutige Kennung zur Laufzeit

Statt 10 Bearbeitungsfeld mit IDs aufweist:

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 

Jetzt habe ich dies: auf dem Bildschirm

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 

Aber ich kopieren Sie es 10-mal. So weit, so gut ... mein Problem ist jetzt, dass ich Kontrollen auf dem Bildschirm identifizieren muss, um ein Automatisierungstestwerkzeug zu verwenden, und die Kontroll-ID ist immer die gleiche für alle 10 Bearbeitungsfelder. Gibt es eine Eigenschaft in der Kontrolle, die ich verwenden kann, um Kontrollen außer der Kontroll-ID eindeutig zu identifizieren?

Danke.

Antwort

0

Verwenden Sie ein untergeordnetes Dialogfeld, das einzeln nummeriert ist, und platzieren Sie dann das Steuerelement im untergeordneten Dialogfeld. Verwenden Sie WS_CHILD dafür.

Mit diesem Trick können Sie auch die Eltern des Kindes bestimmen.

In Code-Projekt finden Sie ein Beispiel und Anforderungen, wie Sie einen untergeordneten Dialog in Ihrem Dialog einbetten.

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

Ein anderer Weg ist gerade neuen Ids zu setzen, nachdem die Kontrollen erstellt werden. CWnd :: SetDlgCtrlID wird dies tun. Sie können sie auf diese Weise einzigartig halten

+0

Mein Problem ist nicht, wie die Dialoge einzubetten ... das ist bereits implementiert und funktioniert .... Ich muss jedes Steuerelement in diesen eingebetteten Dialogen einzeln identifizieren. Das Testteam verwendet ein Tool, mit dem alle Steuerelemente mithilfe der Steuer-ID identifiziert werden, und nun werden alle diese IDs dupliziert. –

+0

Änderte meine Antwort – xMRi