读书人

怎么获得最前端的窗口

发布时间: 2012-02-10 21:27:42 作者: rapoo

如何获得最前端的窗口?
条件尽量不直接使用WIN32 API。。。或者是,有使用的话,也可以从Win32 API那里获得的句柄得到一个TForm的指针。

情况是这样的,我有一个线程作为TCP客户端在后端不断地与另一个TCP服务端程序通讯,如果发现了与服务端的TCP连接已经断掉。。。我希望有如下一个运行结果产生。。。

1.关闭掉当前非主窗口的一切窗口。
2.再弹出一个最上层的告警窗口显示正在连接中。。。直到连接成功后,这个告警窗口才自动消失。

目前,第2点我已实现,但第一点没有实现,这样,程序就不是很完美,因为,如果操作员在点击了某个菜单后,会产生一个Dialog窗口,此时,如果TCP链路断掉,是会弹出来我的告警窗口,但用户还是可以点击那个Dialog窗口中的内容,这样会程序使用者的体验。。。

所以我,非常想知道如何获得当前程序最前端的窗口,当然,最好还是一个TForm指针也好,这样,我就可以通过比较窗体名,把所有不是MainForm的窗体都全部关掉后,再Show出我的告警窗口。

[解决办法]
HWND GetForegroundWindow(VOID);
返回用户当前正在使用的最前端的窗口的句柄
[解决办法]
如果窗口是本程序生成的,可以用Screen-> ActiveForm获得

读书人网 >C++ Builder

热点推荐