关于delphi 窗口置底与置顶的问题 !!!急救!!!

asdfasawed 2012-06-30 05:20:03
求代码 如何使 窗口(form1)置顶 要求要有 QQ的效果 不论点击其他程序窗体 form1都在最前面 点击显示桌面按钮 form1仍然在前面 不消失
置底要求 不论怎么点击 form1 它都在最低层 点击显示桌面按钮 form1仍然不消失


...全文
399 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
asdfasawed 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
Delphi(Pascal) code

procedure SwitchToThisWindow(hWnd: HWND; fAltTab: BOOL); stdcall; external user32;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
SwitchToThisWindow(Handle, True)
……
[/Quote]
可否改进一下 以供学习
asdfasawed 2012-07-02
  • 打赏
  • 举报
回复
好像不行啊
procedure SwitchToThisWindow(hWnd: HWND; fAltTab: BOOL); stdcall; external user32;

哪里错了 我从其他地方找了解法 很好的

public
{ Public declarations }
procedure CreateParams(var Params: TCreateParams); override;
。。。
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent := FindWindow('Progman',nil);
end;
s11ss 2012-07-02
  • 打赏
  • 举报
回复
procedure SwitchToThisWindow(hWnd: HWND; fAltTab: BOOL); stdcall; external user32;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
SwitchToThisWindow(Handle, True)
end;
s11ss 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
但是点击 显示桌面 的问题还没解决
[/Quote]
procedure SwitchToThisWindow(hWnd: HWND; fAltTab: BOOL); stdcall; external user32;
用timer调用SwitchToThisWindow(FrmMain.Handle, True)
asdfasawed 2012-07-02
  • 打赏
  • 举报
回复
真是太感谢了 用timer每0.01秒状态刷新一下
SetWindowPos(FrmMain.Handle,HWND_BOTTOM,
FrmMain.Left,
FrmMain.top,
FrmMain.Width ,
FrmMain.height,
SWP_SHOWWINDOW);
就可以实现置底了 从桌面时钟学来的 但是点击 显示桌面 的问题还没解决
山东蓝鸟贵薪 2012-07-01
  • 打赏
  • 举报
回复
学习一下
asdfasawed 2012-07-01
  • 打赏
  • 举报
回复
置顶是置顶了 不过 点击显示桌面 还是会消失 这个要怎么搞啊

置底好像还不行诶 点击窗体 还是会覆盖其他程序窗体

各位不要嫌我烦啊 我是初学 delphi 想做个桌面时钟当练习 就与到麻烦了

呵呵
kaikai_kk 2012-06-30
  • 打赏
  • 举报
回复
Form1.FormStyle:=fsStayOnTop;
lzg827 2012-06-30
  • 打赏
  • 举报
回复
         //置顶
procedure TFrmMain.Button1Click(Sender: TObject);
begin
SetWindowPos(FrmMain.Handle,HWND_TOPMOST,
FrmMain.Left,
FrmMain.top,
FrmMain.Width ,
FrmMain.height,
SWP_SHOWWINDOW);
end;

//置底
procedure TFrmMain.Button2Click(Sender: TObject);
begin
SetWindowPos(FrmMain.Handle,HWND_BOTTOM,
FrmMain.Left,
FrmMain.top,
FrmMain.Width ,
FrmMain.height,
SWP_SHOWWINDOW);
end;
浩南_哥 2012-06-30
  • 打赏
  • 举报
回复
百度 SetWindowPos

1,183

社区成员

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

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