一定要把主窗口设成主窗体,然后改一个工程文件,把登录窗口设成showmodal 在工程文件里写上 if 登录窗口.showmodal=1 then application.run else Application.Terminate; 就可以了
好象好多人问过同样的问题。 看看WM_SYSCOMMAND就行了。
postmessage(handle,WM_SYSCOMMAND,SC_MININAZE,0)
这个问题,你要先做一个系统托盘,然后在使窗体最小化的时候,调用API函数把他加入到任务拦就可以了
var ex:integer; begin ex:=GetWindowLong(handle,GWL_EXSTYLE); SetWindowLong(handle,GWL_EXSTYLE,ex or WS_EX_APPWINDOW); end; 这个是要最小化的窗口. login窗口就hide吧。或者application.showmainform:=false;
你将你程序中用到的setWindowlong语句去掉
(让程序不在状态栏出现的代码 SetWindowLong(Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);)然后再让程序显示在系统栏
unit NotifyIcon1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShellApi;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
MY_TRAY_ICON=1000;
WM_TRAYNOTIFY=2000;var
Form1: TForm1;
nid:TNOTIFYICONDATA;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
nid.cbsize:=sizeof(tnotifyicondata);
nid.wnd:=handle;
nid.uID:=MY_TRAY_ICON;
nid.uflags:=nif_message or nif_icon or nif_tip;
nid.ucallbackmessage:=wm_traynotify;
nid.hicon:=application.Icon.Handle ;
nid.sztip:='NetMax';
shell_notifyicon(nim_add,@nid);
showwindow(application.Handle,sw_hide);end;end.
在工程文件里写上
if 登录窗口.showmodal=1 then application.run
else Application.Terminate;
就可以了
看看WM_SYSCOMMAND就行了。
begin
ex:=GetWindowLong(handle,GWL_EXSTYLE);
SetWindowLong(handle,GWL_EXSTYLE,ex or WS_EX_APPWINDOW);
end;
这个是要最小化的窗口.
login窗口就hide吧。或者application.showmainform:=false;