对一个Modal窗体的父窗体设置 SetForegroundWindow,父窗体把模式子窗体给挡住了,没有办法做任何操作,程序就假死了~~

BuildError 2007-08-16 05:10:43
对一个Modal窗体的父窗体设置 SetForegroundWindow,父窗体把模式子窗体给挡住了,没有办法做任何操作,程序就假死了~~
-------------------------------
当一个窗体被 ShowModal() 出来以后,在某一线程中有设置其父窗体 SetForegroundWindow() 的操作,这样,虽然父窗体显示在顶层了,但却把模式子窗体给挡住了,结果没有办法做任何操作,程序就假死了~~

模式子窗体可能是“OpenFileDialog、SaveFileDialog 或自定义 Form”

由于父窗体需要不定时的接收线程的通知消息,收到消息时要显示在 Z-Order 顶层,所以有这样的需求,不知大家有什么好方法。

我的理想状态是:父窗体显示为顶层时仍能保持其模式子窗体的 Z-Order 顺序……


^)^ 谢谢大家~~!!
...全文
280 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
BuildError 2007-08-28
  • 打赏
  • 举报
回复
看来是没有更好的办法了,结贴了!
BuildError 2007-08-27
  • 打赏
  • 举报
回复
不好意思,这几天没来CSDN,才看到大家的回复。

BringToFront 之前我也用过,经测试,BringToFront、SetForegroundWindow 及 SetWindowPos(...HWND_TOPMOST...) 的效果是一样的!
kabunhi 2007-08-24
  • 打赏
  • 举报
回复
SetWindowPos( hWnd, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE|SWP_NOSIZE );
Jim@luckeeinc.com 2007-08-22
  • 打赏
  • 举报
回复
BringToFront函数试一下 看看有没有效果
BuildError 2007-08-21
  • 打赏
  • 举报
回复
推荐的没错,WTL 是确个好东西,看来还是有必要补一补的!
BuildError 2007-08-20
  • 打赏
  • 举报
回复
感谢 Waiting4you 的回复,对于自定义的子窗体来说,这的确是一个不错的方法,但目前父窗体中的大多数 OpenDialog 类的东西不便于改动,所以最好的解决办法希望是在现有基础之上,希望大家有思路的再给出些建议~~
Waiting4you 2007-08-16
  • 打赏
  • 举报
回复
设置Modal窗体的Owner(Windows定义的那种Owner,不是VCL的)为可能会被SetForegroundWindow的窗体.
假设有TForm1和TForm2, TForm1为主Form, TForm2就是用来ShowModal的.

解决方法:
重载TForm2的CreateParams:

void __fastcall TForm2::CreateParams(Controls::TCreateParams ¶ms)
{
TForm::CreateParams(Params);
Params.WndParent=Form1->Handle; // 设置其Owner为Form1,默认是Application的
}

对于TOpenDialog和TSaveDialog, 没有太好的方法, 只好用API GetOpenFileName和GetSaveFileName了,它的OPENFILENAME结构里可以定义Owner.用WTL里的CFileDialog也是一个好主意(偶现在逮谁向谁推荐WTL,嘻)
随着通信电技术的迅速发展,信息技术给家居行业产生了深远的影响,家居环境的智能化监控已经成为智能家居的一个重要的发展方向。人们逐渐对自己的生活提出一种更高的要求,他们需要一种智能化、可交互,并且融合现代创新科技的产品来改善他们的生活环境,使他们生活更加安全、舒适、便捷、智能。本文根据智能家居的发展背景和研究现状,并且从实用性和可行性角度出发,研究设计了一种基于STM32单片机的智能家居系统。该系统由一个多功能综合的技术系统组成,各个多功能系统间具有协同配合能力。基于STM32单片机实现的功能系统包括:智能温度检测,智能湿度检测,智能烟雾/火灾检测智能检测,无线传输,人机交互机构,风扇调节,报警模块。 整个系统分为前端51单片机采集板和后端STM32单片机接收板。 采集板使用DHT11温湿度传感器、MQ烟雾传感器完成室内家居环境的采集。然后通过nRFL24L01将采集到的数据发送给后端。接收板使用LCD1602完成数据显示、使用蜂鸣器模块报警,使用风扇驱动模块调节室内家居环境。本文完成了智能家居控制系统前端、后端软硬件的设计,使用Altium designer绘制了电路原理图,使用Keil C完成了51单片机和STM32单片机的编程与调试。 最后,对本文设计的基于STM32的智能家居控制系统进行部署调试。试验结果表明,该系统可成功应用在智能家居环境检测调节和火灾安全防护的领域,可提高家居生活智能化水平。

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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