窗体被挡住的问题

gloom 2004-11-05 06:55:19
我的程序中有一个主窗体A,窗体类别为wsNormal,在程序中再New一个新窗体B,B的类别也是wsNormal,B的父窗体为空(NULL),正常情况下,主窗体A最大化显示 ,B比A小,B显示在A的上方。
此时,B显示TFontDialog,问题出现了:
FontDialog显示后主窗体A把窗体B挡住了。FontDialog返回后,B又跳到A前面了
怎么样才能使用B显示FontDialog后自己不会被A挡住 啊?
...全文
237 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gloom 2004-11-08
  • 打赏
  • 举报
回复
不知道是否与窗体的Style有关,
主窗体A,
在设计时BorderStyle=bsNone;
在OnCreate中有如下代码

long style = GetWindowLong(this->Handle, GWL_STYLE);
style=style&(~WS_CAPTION)|WS_POPUP;
SetWindowLong(this->Handle, GWL_STYLE,style);

窗体B与A的Style完全一致,
窗体B的ParentWindow=NULL;
giboer 2004-11-08
  • 打赏
  • 举报
回复
奇怪了,我用CB6,没有发现楼主的问题也,一切正常。
Form1上一按扭,
TForm2 *Form2=new TForm2(this);
Form2->Parent = NULL;
Form2->ShowModal();
delete Form2;
Form2上一TFontDialog,一按扭,
FontDialog1->Execute();
gloom 2004-11-08
  • 打赏
  • 举报
回复
谢谢让面几位的回答,说明几点:
1, B是绝不对StayOnTop的,因为实际应用的关系。
2, FontDialog就是从B中弹出来的,
3, FontDialog返回后,B会自动显示到前台,我的问题是在FontDialog显示的过程中B被挡住了。

问题依然没解决,请大家继续帮忙
Maconel 2004-11-06
  • 打赏
  • 举报
回复
因为字体窗体应该是模式的,所以他和A是属于一体的,当然A要被激活了。
如果允许的话,可以让字体窗体从B里弹出来。或者在字体窗体关闭后,把B给BringToFront。
futulove 2004-11-06
  • 打赏
  • 举报
回复
B设为fsStayOnTop不行吗
jiangshx 2004-11-06
  • 打赏
  • 举报
回复
用SetWindowPos,将B置顶

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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