如何保持窗口置顶

Xx哼哼xX 2009-11-02 10:03:19
如果我有两个窗体,TForm1和TForm2,现在我在TForm1上做一个动作,弹出TForm2,这时,我又要去操作TForm1。但当我去点击TForm1的时候,TForm1就会挡住TForm2,我想问一下,如何保持在我操作TForm1的时候,TForm2始终处于置顶状态!
...全文
307 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lghndyz 2009-11-02
  • 打赏
  • 举报
回复
主要是重载Form的虚拟函数CreateParams, 改变TCreateParams的成员WndParent就可以了
class TForm2 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
protected:
virtual void __fastcall CreateParams(TCreateParams & Param);
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};
void __fastcall TForm2::CreateParams(TCreateParams & Param)
{
//调用基类的函数
TForm::CreateParams(Param);
Param.ExStyle |= WS_EX_TOPMOST;

//这儿最关键的是只要Param.WndParent不是Application- >Handle就可以了,
//不一定非要用GetDesktopWindow(),用其它的窗口也可以。
Param.WndParent = GetDesktopWindow();
}
Jim@luckeeinc.com 2009-11-02
  • 打赏
  • 举报
回复
Form2 fsStayOnTop 会一直挡住Form1的 那Form1永远在Form2下面 不大好操作
看Form2的大小和LZ的需求了 如果Form2很小 需要这样来设计 那就用fsStayOnTop
lhy 2009-11-02
  • 打赏
  • 举报
回复
把TForm2给fsStayOnTop了。
Jim@luckeeinc.com 2009-11-02
  • 打赏
  • 举报
回复
你说的置顶应该是Form2的Align设置成alTop,然后show出Form2吧
你操作Form1的时候肯定是Form1获得焦点
Xx哼哼xX 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lhylhy 的回复:]
把TForm2给fsStayOnTop了。

[/Quote]

好用!谢谢!

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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