主窗口:Form_Main
我想在主窗口上浮动一个窗口Form_Mask在Create事件里创建Form_Mask如下: Form_Mask:=TForm_Mask.Create(Form_Main);
setwindowpos(Form_Mask.handle,Hwnd_Topmost,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);//窗口置顶
Form_Mask.Show;但是当我点其它程序的窗口(比如我的电脑)时,Form_Mask还是在上面,结果我的电脑夹在了两个窗口中间!如何才能使Form_Mask一直在Form_Main之上,但我点其它程序时,Form_Main和Form_Mask就都到后面去?
我想在主窗口上浮动一个窗口Form_Mask在Create事件里创建Form_Mask如下: Form_Mask:=TForm_Mask.Create(Form_Main);
setwindowpos(Form_Mask.handle,Hwnd_Topmost,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);//窗口置顶
Form_Mask.Show;但是当我点其它程序的窗口(比如我的电脑)时,Form_Mask还是在上面,结果我的电脑夹在了两个窗口中间!如何才能使Form_Mask一直在Form_Main之上,但我点其它程序时,Form_Main和Form_Mask就都到后面去?
解决方案 »
- 请高手指教,如何循环赋值:edit[n].text:=str[m];
- 如何动态调用dll?
- 问个小问题~如何指定dbgrideh中某列的值不允许修改~各位帮帮忙!!
- 大家帮我看看这个程序有什么问题
- 300分!300分!!300分!!!求解:程序自己建立拨号网络的若干问题!!!!!!!!
- 控制打印机走纸???
- 日期判断
- 如何将某一个目录下的所有的图片文件作一个缩略浏览,就像ACDSee中的那样?
- 各位大虾,谁知道怎么用Delphi做打飞机游戏?
- 小白求助 希望大神们可以帮帮我
- adoquery使用cluseserver和cluseclient的效率问题
- 【120分】求RichEdit带格式的内容发送TIdSMTP
begin
inherited;
//如果当前线程是激活的
if IsCurrentProcess then
begin
setwindowpos(Form_Mask.handle,Hwnd_Topmost,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end
else
begin
//要用两次,先移到后面再放到前面,不然会出现我说的直接把其它窗口拖过来会夹在中间:(
setwindowpos(Form_Mask.handle,Hwnd_Bottom,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
setwindowpos(Form_Mask.handle,Hwnd_NoTopmost,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);
end;
end;//下面是判断当前是线程是否是活动的
function TForm_Main.IsCurrentProcess: Boolean;
var
Fore_hWnd:HWND;
dwProcessID:integer;
tutuProcessID:integer;
begin
//获取当前窗口
Fore_hWnd := GetForegroundWindow();
//获取当前窗口的进程ID
GetWindowThreadProcessId(Fore_hWnd,@dwProcessID);
GetWindowThreadProcessId(Application.Handle,@tutuProcessID); if dwProcessID=tutuProcessID then
result:=true
else
result:=false;
end;
begin
Form2 := TForm2.Create(Form1);
Form2.Show;
end;procedure TForm1.OnActivate(var _M:TMessage);//message WM_Activate;
begin
if _M.WParam = WA_INACTIVE then
begin
if assigned(Form2) then
setwindowpos(Form2.Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end
else
begin
if assigned(Form2) then
setwindowpos(Form2.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
// inherited;
end;
哎,不说了...还是期待高人吧....