2009-11-10 60 views
4

在我的(PowerBuilder)应用程序中,我希望能够确定与给定窗口句柄相对应的graphicobject对象。如何获得给定HWND句柄的PowerBuilder图形对象?

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

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

是否可能有一些窗口消息可以发送到窗口句柄,并且此消息只能被PowerBuilder窗口理解,而这些窗口会使用其内部对象名称进行响应?

回答

1

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


(加2010-06-21)对于不属于主窗口的孩子,您可以明确地isValid()检查每个窗口类名的窗口。然后对于每个有效的窗口,通过查找句柄来挖掘。只要你一次只打开窗口类的一个实例,这应该工作。如果您打开多个实例,我认为您需要向这些窗口的open添加注册机制,以便应用程序可以访问它们。

+0

不幸的是,前者是我的情况。我需要获取与给定窗口句柄相对应的PowerBuilder应用程序的图片对象(如果有的话)。 – 2009-11-12 20:57:24

+1

你是否继承祖先类的所有窗口? – 2009-11-13 20:24:13

+0

@Hugh:不,我不是;我确实考虑过这种替代方法(然后在'open'事件处理程序中维护一个HWND-> graphicobject映射),但不幸的是我不能在我的情况下使用它。 – 2009-11-17 15:07:46

相关问题