求救高手!!!!!!请问如何获得应用程序当前活动窗口

dytxy 2006-07-15 08:33:24
我有一个自定义函数,需要获取PB应用程序中当前活动的窗口,并将其实例化,查得了很多资料,没有解决,哪位高手帮一下


window lw_activateWindow

//
//?????????????????????????????
//

lw_activateWindow=...//在这里我需要获取当前活动窗口实例

if IsValid(lw_activateWindow) then
//程序段
end if

我试过用API获取活动窗口,但只能得到一个窗口句柄,如何将句柄实例化,PB中怎么弄不知道.
ULong hWnd
hWnd = GetForegroundWindow()
...............................


多谢多谢!!!一定给分!

...全文
350 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun1976 2006-07-16
  • 打赏
  • 举报
回复
graphicobject lgo_focus
object le_object
lgo_focus = GetFocus()
if IsValid (lgo_focus) then
le_object = lgo_focus.TypeOf()
if le_object <> datawindow! then
……
end if
end if
sun1976 2006-07-16
  • 打赏
  • 举报
回复
做个祖先窗口
自定义响应热键的事件,pbm_keydown?
然后别的窗口都继承这个祖先
  • 打赏
  • 举报
回复
上面说的只适用于用opensheet打开的窗口类型
dytxy 2006-07-16
  • 打赏
  • 举报
回复
谢谢sun1976!问题得到解决

graphicobject lgo_focus
object le_object
boolean lb_foundwin

lgo_focus = GetFocus()
if IsValid (lgo_focus) then
le_object = lgo_focus.TypeOf()
if le_object <> window! then
do while true
lgo_focus=lgo_focus.getparent( )
if not IsValid (lgo_focus) then
exit
end if
le_object = lgo_focus.TypeOf()
if le_object = window! then
lb_foundwin=true
exit
end if
next
if not lb_foundwin then
messagebox('提示','未找到.')
return
end if
end if
dytxy 2006-07-15
  • 打赏
  • 举报
回复
逐级向上级查找控件??能说详细一点怎么做吗?我刚学PB,很多东西不懂,呵呵~~
另外补充一下,其实我的这个函数是一个热键调用的,我想让用户按了热键后,查找出当前活动窗口内的数据窗口,然后作相应处理,对PB来说,MDI内的子窗口PB提供了函数GetActiveSheet()可直接得出,而现在的关键是我无法将活动的窗口实例化来处理.
对于以上功能,还用没有更好的思路,麻烦大家帮我想一想,谢谢了!
dytxy 2006-07-15
  • 打赏
  • 举报
回复
逐级向上级查找控件??能说详细一点怎么做吗?我刚学PB,很多东西不懂,呵呵~~
另外补充一下,其实我的这个函数是一个热键调用的,我想让用户按了热键后,查找出当前活动窗口内的数据窗口,然后作相应处理,对PB来说,MDI内的子窗口PB提供了函数GetActiveSheet()可直接得出,而现在的关键是我无法将活动的实例化来处理.
对于以上功能,还用没有更好的思路,麻烦大家帮我想一想,谢谢了!
sun1976 2006-07-15
  • 打赏
  • 举报
回复
逐级向上级查找控件到类型为窗口
如mdi 可以用mdiframewindow.GetActiveSheet ( )

1,108

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧