SetWindowPos如何设置参数,使效果和showmodal一样(20分)

Y

yhl1118

Unregistered / Unconfirmed
GUEST, unregistred user!
SetWindowPos(MainForm.handle,HWND_TopMost,0,0,0,0,<br>&nbsp; &nbsp; &nbsp; &nbsp;SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
 
不对啊,我试了一下,什么也没有出现
 
把它放在要Show的Form的OnCreate中,然后Show该Form,但这个只是让它在最前面而已,<br>和ShowModal还是有区别的,你为什么不直接用ShowModal?
 
想做一个象netants那样的悬浮窗,如果用有一个窗口showmodal, 就不能拖动悬浮窗。<br>所以,我想可能要用这个函数。可是要如何保证用了这个函数的窗口能在最上面,象showmodal,<br>但又能拖动悬浮窗口呢?
 
这和ShowModal是不一样的,ShowModal之后,主窗体就不可用了。<br>你要做的其实是“总在最前”,<br>在FormCreate中加一句<br>SetWindowPos(handle,HWND_TopMost,0,0,0,0,<br>&nbsp; &nbsp; &nbsp; &nbsp;SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);<br>就可以了。<br><br>拖动无标题窗体:<br>procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;<br>&nbsp; Shift: TShiftState; X, Y: Integer);<br>begin<br>&nbsp;ReleaseCapture;<br>&nbsp;SendMessage(handle,WM_SysCommand,$F012,0);<br>end;<br><br>
 
zw84611:谢谢你的帮助,可是我在一个窗口1的oncreate增加了<br>SetWindowPos(handle,HWND_TopMost,0,0,0,0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);<br>窗口1确实在最上面,但我还是可以操作其他窗口,而我希望在窗口1打开的时候,不能<br>操作其他的窗口,除了悬浮窗。<br>我要如何做呢,如果你不理解我的要求,请运行netants的增加窗口,你看看就知道。<br><br>
 
两种方式:<br>1.悬浮窗用另一个进程建立。<br>2.手工实现ShowModal的方式: <br>&nbsp; 将所有其它窗口(除了悬浮窗和你希望showmodal的窗口1之外)全部disable,然后用show方法显示窗口1. 在窗口1退出时再enable其它窗口。
 
to Another_eYes:<br>&gt;悬浮窗用另一个进程建立。<br>能否说的具体点,要如何建立。<br>&gt;手工实现ShowModal的方式: <br>&nbsp; 将所有其它窗口(除了悬浮窗和你希望showmodal的窗口1之外)全部disable,然后用show方法显示窗口1. 在窗口1退出时再enable其它窗口<br>netants好象不是这么做的
 
怎么问题总是解决一半:(
 
我解决了.<br>在unit1中这样写<br>.......<br>unit Unit1;<br>var<br>&nbsp; Form1: TForm1;<br>&nbsp; WindowList:pointer; &nbsp; //注意这句<br>implementation<br><br>uses Unit2;<br><br>{$R *.dfm}<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>&nbsp; windowlist:=DisableTaskWindows(form2.Handle);<br>&nbsp; form2.show;<br>end;<br><br>end.<br><br>在unit2中这样写<br>......<br>procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);<br>begin<br>&nbsp; EnableTaskWindows(WindowList);<br>end;<br><br>效果同模态窗口一样.<br>
 
to www:<br>可是我同样不能移动其他的窗口了,看来我没有将问题说清楚。<br>其实你们运行一下netants就知道,当打开他的增加下载的窗口时,他的悬浮窗口是可以移动的<br>而其他的窗口均无法操作,只有等增加的窗口关闭后才可以,所以他的增加窗口象一个showmodal,<br>但我想应该不是win.showmodal这样写的,不知道他是如何控制的
 
设置 FormStyle 属性为 fsStayOnTop
 
这个问题不是这么简单的,这句话在论坛中已经太多了,谁实现过,给点建设性的建议
 
肯定是 showmodal 一样的效果,不管它是不是用这条语句!!!!!!
 
to jsxjd:<br>你是说netants的增加的窗口是showmodal的吗,可是他的悬浮窗在打开增加窗口时为什么可以移动呢
 
modal 窗口本来都是可以移动的啊.
 
拜托老兄,看看清楚,我是问netants中打开"增加"的窗口时,悬浮窗口还是可以移动,<br>而不是"增加"窗口可以移动,如果“增加”窗口是showmodal打开的,悬浮窗口应该是无法移动的。<br>谁还有建议的,来说说
 
showmodal 时,“悬浮窗口应该是无法移动的”这句本身是错误的!!!!!!<br>只要悬浮窗口的父窗口不是本应用程序窗口,就和这个 modal 无关。<br>应用程序弹出悬浮窗口 时可以设置它的父窗口不为本程序主窗口。<br><br>另外,modal 窗口有多种类型,有系统级的,程序级的。<br><br>还有什么?<br>
 
我希望能有点代码来看看如何实现。
 
顶部