社区
Windows SDK/API
帖子详情
如何用api函数将窗体设置为最顶层类型,如何设置为正常?????
redlegend_126_com
2003-02-04 12:50:53
哦,我用form1.formstyle:=fsstayontop;会闪的,并且我在任务拦的图标会消失的,如何解决呀????
...全文
523
5
打赏
收藏
如何用api函数将窗体设置为最顶层类型,如何设置为正常?????
哦,我用form1.formstyle:=fsstayontop;会闪的,并且我在任务拦的图标会消失的,如何解决呀????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
redlegend_126_com
2003-02-06
打赏
举报
回复
哦,我会了,马上给分
liping3388
2003-02-06
打赏
举报
回复
用下面的语句可实现
procedure TForm1.Button1Click(Sender: TObject);
begin
SetWindowPos(Form1.handle, HWND_TOPMOST,
Form1.Left, Form1.Top, Form1.Width, Form1.Height,0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SetWindowPos(Form1.handle, HWND_NOTOPMOST,
Form1.Left, Form1.Top, Form1.Width, Form1.Height,0);
end;
grail_
2003-02-04
打赏
举报
回复
函数功能:该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序。子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。
函数原型:BOOL SetWindowPos(HWN hWnd,HWND hWndlnsertAfter,int X,int Y,int cx,int cy,UNIT.Flags);
参数:
hWnd:窗口句柄。
hWndlnsertAfter:在z序中的位于被置位的窗口前的窗口句柄。该参数必须为一个窗口句柄,或下列值之一:
HWND_BOTTOM:将窗口置于Z序的底部。如果参数hWnd标识了一个顶层窗口,则窗口失去顶级位置,并且被置在其他窗口的底部。
HWND_DOTTOPMOST:将窗口置于所有非顶层窗口之上(即在所有顶层窗口之后)。如果窗口己经是非顶层窗口则该标志不起作用。
HWND_TOP:将窗口置于Z序的顶部。
HWND_TOPMOST:将窗口置于所有非顶层窗口之上。即使窗口未被激活窗口也将保持顶级位置。
查g看该参数的使用方法,请看说明部分。
x:以客户坐标指定窗口新位置的左边界。
Y:以客户坐标指定窗口新位置的顶边界。
cx:以像素指定窗口的新的宽度。
cy:以像素指定窗口的新的高度。
uFlags:窗口尺寸和定位的标志。该参数可以是下列值的组合:
SWP_ASNCWINDOWPOS:如果调用进程不拥有窗口,系统会向拥有窗口的线程发出需求。这就防止调用线程在其他线程处理需求的时候发生死锁。
SWP_DEFERERASE:防止产生WM_SYNCPAINT消息。
SWP_DRAWFRAME:在窗口周围画一个边框(定义在窗口类描述中)。
SWP_FRAMECHANGED:给窗口发送WM_NCCALCSIZE消息,即使窗口尺寸没有改变也会发送该消息。如果未指定这个标志,只有在改变了窗口尺寸时才发送WM_NCCALCSIZE。
SWP_HIDEWINDOW;隐藏窗口。
SWP_NOACTIVATE:不激活窗口。如果未设置标志,则窗口被激活,并被设置到其他最高级窗口或非最高级组的顶部(根据参数hWndlnsertAfter设置)。
SWP_NOCOPYBITS:清除客户区的所有内容。如果未设置该标志,客户区的有效内容被保存并且在窗口尺寸更新和重定位后拷贝回客户区。
SWP_NOMOVE:维持当前位置(忽略X和Y参数)。
SWP_NOOWNERZORDER:不改变z序中的所有者窗口的位置。
SWP_NOREDRAW:不重画改变的内容。如果设置了这个标志,则不发生任何重画动作。适用于客户区和非客户区(包括标题栏和滚动条)和任何由于窗回移动而露出的父窗口的所有部分。如果设置了这个标志,应用程序必须明确地使窗口无效并区重画窗口的任何部分和父窗口需要重画的部分。
SWP_NOREPOSITION;与SWP_NOOWNERZORDER标志相同。
SWP_NOSENDCHANGING:防止窗口接收WM_WINDOWPOSCHANGING消息。
SWP_NOSIZE:维持当前尺寸(忽略cx和Cy参数)。
SWP_NOZORDER:维持当前Z序(忽略hWndlnsertAfter参数)。
SWP_SHOWWINDOW:显示窗口。
返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误消息,请调用GetLastError函数。
备注:如果设置了SWP_SHOWWINDOW和SWP_HIDEWINDOW标志,则窗口不能被移动和改变大小。如果使用SetWindowLoog改变了窗口的某些数据,则必须调用函数SetWindowPos来作真正的改变。使用下列的组合标志:SWP_NOMOVEISWP_NOSIZEISWP_FRAMECHANGED。
有两种方法将窗口设为最顶层窗口:一种是将参数hWndlnsertAfter设置为HWND_TOPMOST并确保没有设置SWP_NOZORDER标志;另一种是设置窗口在Z序中的位置以使其在其他存在的窗口之上。当一个窗口被置为最顶层窗口时,属于它的所有窗口均为最顶层窗口,而它的所有者的z序并不改变。
如果HWND_TOPMOST和HWND_NOTOPMOST标志均未指定,即应用程序要求窗口在激活的同时改变其在Z序中的位置时,在参数hWndinsertAfter中指定的值只有在下列条件中才使用:
在hWndlnsertAfter参数中没有设定HWND_NOTOPMOST和HWND_TOPMOST标志。
由hWnd参数标识的窗口不是激活窗口。
如果未将一个非激活窗口设定到z序的顶端,应用程序不能激活该窗口。应用程序可以无任何限制地改变被激活窗口在Z序中的位置,或激活一个窗口并将其移到最高级窗口的顶部或非最高级窗口的顶部。
如果一个顶层窗口被重定位到z序的底部(HWND_BOTTOM)或在任何非最高序的窗口之后,该窗口就不再是最顶层窗口。当一个最顶层窗口被置为非最顶级,则它的所有者窗口和所属者窗口均为非最顶层窗口。
一个非最顶端窗口可以拥有一个最顶端窗口,但反之则不可以。任何属于顶层窗口的窗口(例如一个对话框)本身就被置为顶层窗口,以确保所有被属窗口都在它们的所有者之上。
如果应用程序不在前台,但应该位于前台,就应调用SetForegroundWindow函数来设置。
Windows CE:如果这是一个可见的顶层窗口,并且未指定SWP_NOACTIVATE标志,则这个函数将激活窗口、如果这是当前的激活窗口,并且指定了SWP_NOACTIVATE或SWP_HIDEWINDOW标志,则激活另外一个可见的顶层窗口。
当在这个函数中的nFlags参数里指定了SWP_FRAMECHANGED标志时,WindowsCE重画窗口的整个非客户区,这可能会改变客户区的大小。这也是重新计算客户区的唯一途径,也是通过调用SetwindowLong函数改变窗口风格后通常使用的方法。
SetWindowPos将使WM_WINDOWPOSCHANGED消息向窗口发送,在这个消息中传递的标志与传递给函数的相同。这个函数不传递其他消息。
Windows CE 1.0不支持在hWndlnsertAber参数中的HWND_TOPMOST和HWND_NOTOPMOST常量。
Windows CE1.0不支持在fuFags参数中的SWP_DRAWFRAME和SWP_NOCOPYBITS标志。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h库文件:eser32lib。
ehom
2003-02-04
打赏
举报
回复
SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_SHOWWINDOW);
papaya_stone
2003-02-04
打赏
举报
回复
SetWindowPos()
让
窗体
始终出现在最
顶层
本程序实现了让
窗体
始终出现在最
顶层
,需要的朋友请看
使用C#制作,总是将
窗体
放置在最上面,并
设置
为
顶层
打开下面链接,直接免费下载资源: https://renmaiwang.cn/s/xqxc4 该C#开发工具设计的
窗体
始终位于所有其他
窗体
之上,并不会受到其他
窗体
的影响,持续处于显示窗口的首位位置。对于常使用PPS观看电视节目的用户来说,这个软件具有一个特别实用的
设置
:将电影置于窗口顶部。无论你在做什么事情时打开窗口,它始终保持在屏幕顶端位置。 C#语言是微软推出的一种面向对象的编程语言,它继承了C和C++的语法特性,并且在运行时与.NET框架紧密集成。在使用C#开发Windows应用程序时,一个常见的需求是创建一个始终位于所有其他窗口之上的
窗体
,这在实现用户界面时提供了一种便捷的交互方式。 通过编写特定的代码,开发者可以实现让
窗体
始终位于其他所有窗口的上层。这通常涉及Windows
API
调用,特别是在C#中,可以通过调用Win32
API
函数
来
设置
窗体
的属性,使得这个
窗体
成为
顶层
窗口。
顶层
窗口不会被其他非
顶层
窗口遮挡,即使是在全屏模式下,也依然可以保持在屏幕最前显示。 在实际应用中,这样的
窗体
设计特别适用于那些需要频繁与用户交互的应用程序。比如媒体播放器,用户在观看视频时可能会希望进行其他操作,而不必担心播放器窗口被其他应用程序遮挡。在这个场景下,开发人员就可以为媒体播放器添加
顶层
窗体
的功能,从而保证用户可以在进行其他操作时,视频播放界面始终可见。 此外,为了满足特定的用户习惯或需求,该软件提供了将电影置于窗口顶部的功能。这个功能对于经常使用PPS等视频播放软件的用户来说十分实用,因为它可以确保用户在进行其他任务时,可以随时关注到视频播放的内容,而无需担心被其他应用程序干扰。 源码的提供让开发人员可以学习和理解如何在C#中实现
窗体
的
顶层
功能。这不仅有助于新手开发者理解
窗体
与操作系统的交互,也可以让经验丰富的开发者快速实现相关功能,提高开发效率。对于行业来说,开源
让
窗体
保持在最上方-delphi源码
让
窗体
保持在最上方--delphi源码。可以解决
窗体
被覆盖的问题。
监视最
顶层
窗口
监视最
顶层
窗口,GetForgroundWindow,如有变化就记录下来,可用于协助解决玩游戏经常弹出到桌面的问题。因为不很完善,一并将代码给出,可执行文件在Release目录下。
C#
窗体
总在最前面
窗口总是在做前面的!窗口总是在做前面的!窗口总是在做前面的!窗口总是在做前面的!
Windows SDK/API
1,184
社区成员
22,326
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章