简单问题!怎样撤销窗体在最上层?Setwindowpos为什么失效?在线等!

airhand 2003-12-09 02:28:06
我的代码如下:
if chbAlwaysTop.Checked then
begin
bAlwaysTop:=1;
SetWindowPos(form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);//这句有效
end
else
begin
bAlwaysTop:=0;
SetWindowPos(form1.Handle, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);//这句没有用,不知道为什么,那位解答一下!
end;

设置成在最上后,再取消就不行了,调试时代码也都走过,不知道是为什么,那位高手指点一下!
...全文
126 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
airhand 2003-12-10
  • 打赏
  • 举报
回复
写在一个Checkbox的ONCLICK事件里,把窗设置最上之后,再取消就不行了!
zyq_123 2003-12-09
  • 打赏
  • 举报
回复
你这段代码是写在那个事件里面的?
airhand 2003-12-09
  • 打赏
  • 举报
回复
对不起,各位,我贴的代码错了,应该贴的是和一楼一样的,就是这个HWND_NOTOPMOST不起作用,请大家帮帮忙!
if chbAlwaysTop.Checked then
begin
bAlwaysTop:=1;
SetWindowPos(form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);//这句有效
end
else
begin
bAlwaysTop:=0;
SetWindowPos(form1.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);//这句没有用,不知道为什么,那位解答一下!
end;
zyq_123 2003-12-09
  • 打赏
  • 举报
回复
一楼正解!
fjyhs 2003-12-09
  • 打赏
  • 举报
回复
把SetWindowPos(form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
改为SetWindowPos(form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE);
就可以了
xyc189 2003-12-09
  • 打赏
  • 举报
回复

if chbAlwaysTop.Checked then
begin
bAlwaysTop:=1;
SetWindowPos(form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);//这句有效
end
else
begin
bAlwaysTop:=0;
SetWindowPos(form1.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);//这句没有用,不知道为什么,那位解答一下!
end;

1,183

社区成员

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

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