win7系统,delphi环境下,新窗口会藏在老窗口下面怎么解决避免

jiangjian88424 2018-02-25 12:41:41
delphi6下开发出的软件 有时候弹出的窗口或者对话框会藏在老窗口(主界面)下面 导致鼠标点不动造成假死状态!
偶发性,不会经常出现!
运气不好,一天出现几次。
运气好,一般不会发生。。
大神们,有什么好办法可以避免这个问题么?
...全文
1298 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocongzhi 2018-02-27
  • 打赏
  • 举报
回复
Messagebox用application的句柄试试
jiangjian88424 2018-02-26
  • 打赏
  • 举报
回复
引用 2 楼 yqbaby 的回复:
MessageBox的窗口句柄没设置好,比如直接给个0做窗口句柄,的确会发生这样的事情,用MessageDlg一般不会出现,但按钮需要汉化,指定的内容也相对多一点.
对了 我MessageBox做过当前窗口句柄了 当前窗口句柄 还是会发生 代码如下:MessageBox(self.Handle,'XXXXXXXXXXXXXXXXXX','提示(Tips)',MB_OK);
jiangjian88424 2018-02-26
  • 打赏
  • 举报
回复
引用 2 楼 yqbaby 的回复:
MessageBox的窗口句柄没设置好,比如直接给个0做窗口句柄,的确会发生这样的事情,用MessageDlg一般不会出现,但按钮需要汉化,指定的内容也相对多一点.
、、 XP下就没有这种问题了 只有win7以上才有
jiangjian88424 2018-02-26
  • 打赏
  • 举报
回复
引用 3 楼 hongss 的回复:
以前也碰到过这个问题,后来大神ccrun给了个办法,解决了。 大神说 一般情况下模态窗口被隐藏在其他窗口后面,是窗口的Z-Order问题 可以这样写
void __fastcall TForm_Main::Btn_PosCtrlClick(TObject *Sender)
{
    TFormStyle fs = FormStyle;
    FormStyle = fsNormal;

    Form_PosCtrl = new TForm_PosCtrl(this);
    Form_PosCtrl->ShowModal(); 
    delete Form_PosCtrl;

    FormStyle = fs;
}
C++代码,供参考
XP就没问题了 win7以上都会出现这个问题 我估计可能是电脑系统方面有什么地方要设置下
hongss 2018-02-26
  • 打赏
  • 举报
回复
以前也碰到过这个问题,后来大神ccrun给了个办法,解决了。 大神说 一般情况下模态窗口被隐藏在其他窗口后面,是窗口的Z-Order问题 可以这样写
void __fastcall TForm_Main::Btn_PosCtrlClick(TObject *Sender)
{
    TFormStyle fs = FormStyle;
    FormStyle = fsNormal;

    Form_PosCtrl = new TForm_PosCtrl(this);
    Form_PosCtrl->ShowModal(); 
    delete Form_PosCtrl;

    FormStyle = fs;
}
C++代码,供参考
DelphixpeFan 2018-02-26
  • 打赏
  • 举报
回复
MessageBox的窗口句柄没设置好,比如直接给个0做窗口句柄,的确会发生这样的事情,用MessageDlg一般不会出现,但按钮需要汉化,指定的内容也相对多一点.
doloopcn 2018-02-26
  • 打赏
  • 举报
回复
如果代码通用的话,只能升级为XE版

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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