使用OpenSheet打开的窗口的标题列在某个菜单项下面,但它们真正的存储位置是哪里啊?

hykz 2001-07-08 12:25:40
我使用MDI窗体打开多个窗口,需要遍历所有打开窗口的标题,本来想从menu_item.item[]数组中读取,但显示不出来,似乎并没有存储到那个显示菜单项的item[]数组中,到底存在什么地方了?另外,当自定义了一个WINDOW类型后,使用OPENSHEET打开该类型的实例变量,但执行一次打开就开一个新的SHEET窗口,有什么好方法可以使打开的SHEET是唯一的。这也是我想遍历所有打开的SHEET窗口标题再自行判断是否唯一的目的。
...全文
90 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzslx 2001-07-31
  • 打赏
  • 举报
回复
up
pbdesigner 2001-07-31
  • 打赏
  • 举报
回复
大家继续讨论!
wangsw 2001-07-08
  • 打赏
  • 举报
回复
程序只运行一次:::

利用Windows的API函数FindWindow()、BringWindowToTop()、ShowWindow()可实现上述功能。

①定义API:
Funtion ulong FindWindowA( ulong winhandle, string wintitle ) Library "user32"
Funtion uLong BringWindowToTop( ulong hwnd ) Library "user32"
Funtion uLong ShowWindow( ulong winhandle, int wincommand ) Library "user32"

②创建主窗口"w_test",将title设置为"Test Window"

③在application的Open事件中加入如下代码:
ulong ulng_winhandle
ulng_winhandle = FindWindowA( 0,"Test Window" )
If ulng_winhandle > 0 Then
BringWindowToTop( ulng_winhandle )
ShowWindow( ulng_winhandle, 5 )
Return
End If
Open( w_test )

[注]FindWindow()函数

说明: 寻找窗口列表中第一个符合指定条件的顶级窗口。
返回值: ulong,找到窗口的句柄,如未找到相符窗口,则返回零。
参数 类型及说明
winhandle String,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类。
wintitle String,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收任何窗口标题。

BringWindowToTop()函数

说明: 将指定的窗口带至窗口列表顶部。倘若它部分或全部隐藏于其他窗口下面,则将隐藏的部分完全显示出来。该函数也对弹出式窗口、顶级窗口以及MDI子窗口产生作用。
返回值: ulong,非零表示成功,零表示失败。
参数 类型及说明
hwnd ulong,欲带至顶部的那个窗口的句柄。

ShowWindow()函数

说明: 控制窗口的可见性。
返回值: ulong,如窗口之前是可见的,则返回TRUE(非零),否则返回FALSE(零)。
参数 类型及说明
winhandle ulong,窗口句柄,要向这个窗口应用由wincommand指定的命令。
wincommand integer,为窗口指定可视性方面的一个命令。请用下述任何一个常数
0 隐藏窗口,活动状态给另一个窗口。
1 用原来的大小和位置显示一个窗口,同时令其进入活动状态。与9同。
2 最小化窗口,并将其激活
3 最大化窗口,并将其激活。
4 用最近的大小和位置显示一个窗口,同时不改变活动窗口。
5 用当前的大小和位置显示一个窗口,同时令其进入活动状态。
6 最小化窗口,活动状态给令一个窗口。
7 最小化一个窗口,同时不改变活动窗口。
8 用当前的大小和位置显示一个窗口,不改变活动窗口。
9 用原来的大小和位置显示一个窗口,同时令其进入活动状态。
pbdesigner 2001-07-08
  • 打赏
  • 举报
回复
window wSheet
string wName
string ls_findwindow
wSheet = ParentWindow.GetFirstSheet()
IF IsValid(wSheet) THEN
do while isvalid(wsheet)
wName = wsheet.ClassName()
if wname = ls_findwindow then
messagebox("info","窗口已打开")
end if
wSheet = ParentWindow.GetNextSheet(wsheet)
loop
END IF

1,079

社区成员

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

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