我有一个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 ???
之外,控件中是否有任何属性可用于唯一标识控件感谢。
答案 0 :(得分:0)
使用单独编号的子对话框,而不是将控件放在子对话框中。使用WS_CHILD。
通过这个技巧,您也可以确定孩子的父母。
在代码项目中,您可以找到一个示例,并要求如何在对话框中嵌入子对话框。
https://www.codeproject.com/Articles/4408/Creating-embedded-dialogs-in-MFC
另一种方法是在创建控件后设置新的ID。 CWnd :: SetDlgCtrlID将执行此操作。你可以通过这种方式让他们保持独特