【问题标题】:Inspect doesn't recognize win32 editable textboxInspect 无法识别 win32 可编辑文本框
【发布时间】:2015-03-10 18:55:00
【问题描述】:

我开发了一个 win32 应用程序 (c++),现在我想使用 Inspect (SDK) 进行一些自动化测试。

我的问题是 Inspect 无法识别 EDIT 框。我的意思是 Inspect 无法区分他们的名字。它可以看到有多个EDIT 框,但它们都被命名为“none”,恰好是空值。这些名称始终为空,即使我使用 LPCTSTR lpWindowName 参数初始化它们

// Create an edit box
    hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,
        _T("EDIT"),
        _T("I JUST WANT TO BE SEEN !"),
        WS_CHILD|WS_VISIBLE|
        ES_MULTILINE|ES_AUTOVSCROLL|ES_AUTOHSCROLL,
        50,
        100,
        200,
        100,
        hWnd,
        (HMENU)IDC_MAIN_EDIT,
        GetModuleHandle(NULL),
        NULL);

我也尝试使用setWindowText 方法设置名称,但它也不起作用。 这两种方法在BUTTON 上运行良好,但在EDIT 上不起作用。

有没有人提供线索?

【问题讨论】:

  • 您确定您的窗口文本没有出现在可访问对象的任何位置吗?不是accValue吗?如果是accValue,我想我有预感……
  • 无法通过ID区分?例如。在上面的示例中,ID 是IDC_MAIN_EDIT
  • 事实上,LPCTSTR lpWindowName 出现在编辑框中。所以是的,@andlabs,它是当前值而不是名称。
  • @andlabs:事实上,LPCTSTR lpWindowName 显示在编辑框中有文本。所以是的,它是当前值而不是名称。 (抱歉转帖)
  • 是的,编辑控件的窗口文本是已经输入的文本。我的问题是,检查工具中显示为“值:”的内容是什么?如果是这样,我可以提供一个关于发生了什么的假设。如果您想尝试我将要使用的内容,请在其中一个带有其他文本的编辑框的左侧放置一个标签,然后获取该编辑框的可访问性信息。

标签: c++ winapi edit inspect


【解决方案1】:

可以使用动态注释来设置名称(或控件的任何其他属性)。 此外,如果它是一个通用控件,则可以通过在 .rc 文件中添加隐藏标签来设置名称。否则你将不得不使用动态注释。

如果你想设置其中之一:

-NAME                  -KEYBOARDSHORTCUT
-DESCRIPTION           -DEFAULTACTION
-ROLE                  -VALUEMAP
-STATE                 -ROLEMAP
-HELP                  -STATEMAP.

您必须使用直接注释或服务器注释。 但如果你想设置其中之一:

-FOCUS                 -RIGHT
-SELECTION             -PREV
-PARENT                -NEXT
-UP                    -FIRSTCHILD
-DOWN                  -LASTCHILD
-LEFT

只有服务器注释允许您这样做。

以下是有关动态注释的更多详细信息: http://msdn.microsoft.com/en-us/windows/desktop/gg712214.aspx

如果您想对自定义控件进行动态注释,这里有更多详细信息: http://msdn.microsoft.com/en-us/windows/cc307845.aspx

【讨论】:

  • 是的,这是我提出问题的地方。请参阅我上面关于误导性参数名称的评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 2016-08-22
相关资源
最近更新 更多