社区
VFP
帖子详情
messagebox对话框躲在父窗体后面,而父窗体没有设置前置显示
lkeymars
2011-11-14 04:05:27
RT,
这样导致,对话框点不到,程序没反应(用回车键貌似可以返回)
求解.
...全文
188
17
打赏
收藏
messagebox对话框躲在父窗体后面,而父窗体没有设置前置显示
RT, 这样导致,对话框点不到,程序没反应(用回车键貌似可以返回) 求解.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lkeymars
2011-11-16
打赏
举报
回复
謝謝豆老師,
3級表單ShowWindow=1(In Top-Level Form)
已經解決.
十豆三
2011-11-15
打赏
举报
回复
你还有子表单在运行吗?Messagebox 是子表单发出的,还是父表单?
将父表单的 windowType 设为 0
并加一个新子表单试试。
十豆三
2011-11-15
打赏
举报
回复
[Quote=引用 14 楼 lkeymars 的回复:]
补充一点:
3级表单显示时要取得焦点,即3级表单要显示在2级表单前面.直至3级表单退出后,2级表单才可活动
[/Quote]
把2级设为 顶层 非模式,把3级设为 在顶层中、模式。
十豆三
2011-11-15
打赏
举报
回复
你试试我 9楼 和 10楼的方法。
lkeymars
2011-11-15
打赏
举报
回复
补充一点:
3级表单显示时要取得焦点,即3级表单要显示在2级表单前面.直至3级表单退出后,2级表单才可活动
lkeymars
2011-11-15
打赏
举报
回复
实现的效果:
1级表单为自由表单,不作为主表单,任何时候都是活动的;
2-3级表单为关联表单,3级表单活动时,2级表单不能活动.
求教豆老师,
如何设置,可以除去下面这个bug:
测试出与用户操作结果相同的测试操如下:
在messagebox没显示之前,切换了其它窗体,并连续在任务栏点击该窗体,之后返回3级表单,就看不到messagebox
.
但当1,2级表单先最小化时,再做上面的测试发现,可以看到messagebox.
推断,messagebox被1,2级表单给挡住了.
lkeymars
2011-11-15
打赏
举报
回复
messagebox 在按钮点击事件里,显示messageboxp之前还有其它逻辑
测试出与用户操作结果相同的测试操如下:
在messagebox没显示之前,切换了其它窗体,并连续在任务栏点击该窗体,之后返回3级表单,就看不到messagebox
.
但当1,2级表单先最小化时,再做上面的测试发现,可以看到messagebox.
推断,messagebox被1,2级表单给挡住了.
十豆三
2011-11-15
打赏
举报
回复
你的 Messagebox 在什么事件中?
十豆三
2011-11-15
打赏
举报
回复
你改为这样试试:
1级.mainForm:
AlwaysOnTop=.F.
Desktop=.F.
ShowWindow=2(As Top-Level Form)
WindowState=0(Normal)
WindowType=0(modeless)
2级.Form:(由1级打开)
AlwaysOnTop=.F.
Desktop=.F.
ShowWindow=1(In Top-Level Form)
WindowState=0(Normal)
WindowType=1(Modal)
3级.Form:(由2级打开)
AlwaysOnTop=.F.
Desktop=.F.
ShowWindow=1(In Top-Level Form)
WindowState=0(Normal)
WindowType=0(modeless)
3级.Form:(由2级打开)
AlwaysOnTop=.F.
Desktop=.F.
ShowWindow=1(In Top-Level Form)
WindowState=0(Normal)
WindowType=1(Modal)
十豆三
2011-11-15
打赏
举报
回复
你把所有表单的 desktop 设为 .F. 试试
lkeymars
2011-11-15
打赏
举报
回复
因为只有特定情况才会发生这种情况,
用户又不说明白怎样的情况..
在我们的测试中,都不会发生的,当然,是按常规操作的
话说,如果像这种情况的操作,
其中messagebox在3级表单中使用.
在测试中发现,如果在messagebox没出来前,
循环或交错操作:'显示桌面';进入其它程序窗体;windows任务栏选VFP表单.
可能有以下情况发生:
messagebox会显示在最前面,有时3级表单不显示直到点击messagebox返回后才显示,
而2级表单,在任务栏选中后却不显示了,其它正常.
它的运行情况就难预测了...
其他用户也没有这种问题,就只有一个用户,有时会出现这种问题....
在猜想是不是那个用户做过类似的不常规的操作后,出现的这种情况...
lkeymars
2011-11-15
打赏
举报
回复
表单结构如下:
1级.mainForm:
alwaysOnTop=.F.
desktop=.T.
showWindow=2(as top-level)
windowState=0(normal)
windowType=1(modal)
2级.form:(由1级打开)
alwaysOnTop=.F.
desktop=.T.
showWindow=2(as top-level)
windowState=0(normal)
windowType=0(modeless)
3级.form:(由2级打开)
alwaysOnTop=.T.
desktop=.T.
showWindow=2(as top-level)
windowState=0(normal)
windowType=0(modeless)
3级.form:(由2级打开)
alwaysOnTop=.T.
desktop=.T.
showWindow=2(as top-level)
windowState=0(normal)
windowType=1(modal)
其中messagebox在3级表单中使用.
在测试中发现,如果在messagebox没出来前,
循环或交错操作:'显示桌面';进入其它程序窗体;windows任务栏选VFP表单.
可能有以下情况发生:
messagebox会显示在最前面,有时3级表单不显示直到点击messagebox返回后才显示,
而2级表单,在任务栏选中后却不显示了,其它正常.
lkeymars
2011-11-14
打赏
举报
回复
再补充下:
父窗体属性:
alwaysOnTop=.F.
desktop=.T.
showWindow=2
windowType=1
windowState=0
messagebox在按钮动作里
形式如下:
1.if messagebox("send mail?",4+32+256,"mail")=6
2.=messagebox('Please save this S/O first !!!',0,'message')
lkeymars
2011-11-14
打赏
举报
回复
[Quote=引用 1 楼 apple_8180 的回复:]
你的 Messagebox 是后父窗体发出的吧。
Messagebox('只有一个<确定>按钮',4096,'永远置顶')
Messagebox('有<确定>和<取消>按钮',4097,'永远置顶')
Messagebox('有<终止><重试><忽略>按钮',4098,'永远置顶')
Messagebox('有<是><否><取消>按钮',4099,'永远置顶')
[/Quote]
豆老师,后父窗体怎么理解?
补充下,大多数用户基本都可以看到Messagebox,只有个别用户某些情况下会出现这种情况.
taohua300
2011-11-14
打赏
举报
回复
哦
豆老师的更详细
taohua300
2011-11-14
打赏
举报
回复
messagebox("sdf",0x1000, "ad")
十豆三
2011-11-14
打赏
举报
回复
你的 Messagebox 是后父窗体发出的吧。
Messagebox('只有一个<确定>按钮',4096,'永远置顶')
Messagebox('有<确定>和<取消>按钮',4097,'永远置顶')
Messagebox('有<终止><重试><忽略>按钮',4098,'永远置顶')
Messagebox('有<是><否><取消>按钮',4099,'永远置顶')
C#:Win32 Hooks(二)让
MessageBox
自动
显示
在
父
窗体
中心
本文介绍了一个名为
MessageBox
Plus的类,它允许开发者通过Win32Hooks将
MessageBox
对话框
自动定位到
父
窗体
中心,而不仅仅是
显示
在屏幕中心。
.Net下Winform程序让
MessageBox
.Show
显示
在
父
窗体
中间
本文介绍了如何在.Net Winform应用程序中,通过自定义代码和调用WINAPI函数,使得
MessageBox
.Show
对话框
能
显示
在
父
窗体
的中间位置,提供了一种使弹出窗口居中的解决方案。
让
MessageBox
弹出在当前
窗体
的中央,而不是在屏幕的中央
本文介绍了一种在WinForm应用程序中使
MessageBox
始终居中
显示
于
父
窗体
的方法。通过增加一个WH_CALLWNDPROChook来查找WM_INITDIALOGmessage,并在
对话框
打开前调整其位置,确保
MessageBox
在
父
窗体
的中央
显示
。
Winform
MessageBox
.Show时居中到主页面
文章介绍了一个.NETWinform应用中的方法,通过自定义
MessageBox
BingLing类,实现
MessageBox
对话框
显示
在指定
父
窗体
(如控件对象)的中间。该类重写了多个
MessageBox
.Show的方法,并利用WindowsAPI进行窗口定位。,
Win32API之
MessageBox
本文详细介绍了消息
对话框
的原理、使用方法、参数
设置
以及如何通过API进行高级定制,包括创建、
显示
、操作消息
对话框
,以及如何控制其位置、样式和响应。此外,还提供了实例代码演示如何在不同场景下使用消息
对话框
,以及如何通过自定义函数进行更灵活的操作。
VFP
2,749
社区成员
29,142
社区内容
发帖
与我相关
我的任务
VFP
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
复制链接
扫一扫
分享
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章