MFC在运行时控制唯一标识符

时间:2017-03-10 11:08:06

标签: visual-c++ mfc controls

我有一个CDialog与同一组控件重复10次。有很多逻辑,所以我重构了对话框只有一个CDialog但重复了10次。

所以不要有10个带ID的编辑框:

    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 ???

之外,控件中是否有任何属性可用于唯一标识控件

感谢。

1 个答案:

答案 0 :(得分:0)

使用单独编号的子对话框,而不是将控件放在子对话框中。使用WS_CHILD。

通过这个技巧,您也可以确定孩子的父母。

在代码项目中,您可以找到一个示例,并要求如何在对话框中嵌入子对话框。

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

另一种方法是在创建控件后设置新的ID。 CWnd :: SetDlgCtrlID将执行此操作。你可以通过这种方式让他们保持独特