【问题标题】:How do I get the PowerBuilder graphicobject for a given HWND handle?如何获取给定 HWND 句柄的 PowerBuilder 图形对象?
【发布时间】:2009-11-10 14:08:19
【问题描述】:

在我的 (PowerBuilder) 应用程序中,我希望能够确定与给定窗口句柄对应的 graphicobject 对象。

简单地遍历 Control[] 数组并比较每个子控件的 Handle() 函数返回的值不起作用,因为并非我的应用程序中的所有对象都是主窗口的子窗口(考虑登录对话框)。

任何 PowerScript 或 C/C++ 解决方案都可以接受。

是否有一些我可以发送到窗口句柄的窗口消息,而这个消息只有 PowerBuilder 窗口才能理解,它会以它们的内部对象名称或类似名称进行响应?

【问题讨论】:

    标签: c++ c windows powerbuilder


    【解决方案1】:

    是否需要从句柄中确定对象,还是只是想识别一个对象,例如知道需要修改的代码在哪里?我做了一个工具来做后者,但它使用对象焦点,而不是窗口句柄。


    (2010 年 6 月 21 日添加)对于不是主窗口子窗口的窗口,您可以使用 isValid() 显式检查每个窗口类名称。然后对于每个有效的窗口,挖掘寻找句柄。只要您一次只打开一个窗口类的实例,这应该可以工作。如果您打开多个实例,我认为您需要向这些窗口的open 添加注册机制,以便应用程序可以访问它们。

    【讨论】:

    • 不幸的是,前者是我的情况。我需要获取与给定窗口句柄相对应的 PowerBuilder 应用程序的图形对象(如果有)。
    • 您是否从祖先类继承了所有窗口?
    • @Hugh:不,我不是;我确实考虑过这种替代方案(然后在“打开”事件处理程序中维护一个 HWND->graphicobject 映射)但不幸的是我不能在我的情况下使用它。
    • 这个功能是正常使用需要的,还是测试用的?另外,Terry 建议的映射的约束是什么?维护映射是一个问题还是需要修改所有窗口是不可接受的?
    • 糟糕,很抱歉没有早点回复。我在正常使用中不需要此功能,我想将其用于 GUI 测试。我们使用的工具允许通过编写一个小插件来展示给定 HWND 的附加功能(读取:属性或函数),该插件通过特定于工具包的 API 查询附加信息。在我的例子中,我使用 PBNI 来实现这样一个插件 - 我已经解决了大部分问题,但是我缺乏一种很好的方法来识别给定 HWND 句柄的 PowerBuilder 控件。
    猜你喜欢
    • 2020-10-22
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2011-09-20
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多