【问题标题】:WinAPI How to Apply Edit field text change?WinAPI 如何应用编辑字段文本更改?
【发布时间】:2022-01-20 12:22:51
【问题描述】:

我正在使用 3d 派对应用程序。使用

更改编辑控件中的文本
SendMessageW(m_edit_handle,WM_SETTEXT,0,str_address);

它工作正常.. 它在窗口中视觉上发生变化。但是,一旦我单击一个按钮(也以编程方式),它就会工作,因为有一个默认值,但不是我使用 SendMessageW 设置的那个。 只是想知道在编辑窗口中更改文本后是否必须调用其他方法来强制 Windows 更新字段中的实际值?

【问题讨论】:

标签: winapi sendmessage


【解决方案1】:

根据目标应用的编码方式,您可能需要向编辑的父窗口发出EN_CHANGE 通知。发送WM_SETTEXT 不会发送该通知,因为它应该在用户 更改编辑内容时发送,而不是在代码 更改时发送。

SendMessageW(m_edit_handle, WM_SETTEXT, 0, str_address);
SendMessageW(GetParent(m_edit_handle), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(m_edit_handle), EN_CHANGE), LPARAM(m_edit_handle));

【讨论】:

  • 如果我发送 NotifyWinEvent() 应该是一样的,对吧?
  • 没有。 NotifyWinEvent 是 UI 自动化基础结构的一部分,而不是窗口管理器(此答案使用)。如果您从 (IAccessible::put_accValue) 开始使用 UI 自动化,系统将为您完成所有更改通知传播,因此您不会处于需要帮助系统解决问题的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多