怎么释放窗体句柄?(10分)

  • 主题发起人 wphoenix1213
  • 开始时间
W

wphoenix1213

Unregistered / Unconfirmed
GUEST, unregistred user!
我用setactivewindow/setforegroundwindow激活了一个窗体,一直在最前,程序关闭了
也是如此,不知道该怎么办?请各位指点。
 
关闭程序前,再设置为正常状态
 
DestroyWindow
 
to pcexplorer:
能具体点吗?我很菜。
 
to jsxjd:
我试了,不管用,被激活的那个windows窗体一直处于最前.
 
那你获得的 handle 有问题。
或者是不是在窗口中有特殊的处理。
 
to jsxjd:
我也没做啥处理,只是找到那个,改变一下它的pos,然后再激活,[?]
 
这个窗口是你程序内部的,还是其它应用程序的。
是模态的还是非模态的。
把你的激活代码和关闭代码贴出来!
 
to jsxjd:
var
Form1: TForm1;
wnd:thandle;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
wnd:=findwindow(nil,'代码.txt - 记事本');
setwindowpos(wnd,HWND_TOPMOST,0,0,1000,1000,SWP_SHOWWINDOW or SWP_NOSIZE or SWP_NOMOVE);
showwindow(wnd,SW_SHOW);
setforegroundwindow(wnd);
end;

procedure TForm1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
destroywindow(wnd);
end;

代码就是上边写的那样,有劳了。
 
CloseHandle(wnd);
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Wnd: THandle;
begin
Wnd := FindWindow(nil, '代码.txt - 记事本');
SetWindowPos(Wnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW or SWP_NOSIZE
or SWP_NOMOVE);
SetForegroundWindow(Wnd);
end;

procedure TForm1.FormClose(Sender: TObject;
var Action: TCloseAction);
var
Wnd: THandle;
begin
Wnd := FindWindow(nil, '代码.txt - 记事本');
SetWindowPos(Wnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOSIZE
or SWP_NOMOVE);
end;

end.
 
to pcexplorer:
你给我的代码是可以让它失去焦点,但是它还是一直处于最前,我需要把它恢复常态,不要
一直处于最前,请教了。
 
to pcexplorer:
不好意思,我试的时候不够细心,问题解决了,多谢了!!!![:D]
 
多人接受答案了。
 
顶部