rt

解决方案 »

  1.   

    她本来就是这样的,是你用setWindowlong改掉了
    你将你程序中用到的setWindowlong语句去掉
      

  2.   

    先加上让程序不在状态栏出现的代码就OK了
    (让程序不在状态栏出现的代码 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.
      

  3.   

    你的问题是你把登陆窗口做为了主窗口,我一般是把主界面做为主窗体,然后在主界面的paint事件中将登陆窗体创建出来,这样即可以让登陆窗体在主窗体之前出现,又可以保证主界面就是主窗体
      

  4.   

    一定要把主窗口设成主窗体,然后改一个工程文件,把登录窗口设成showmodal
    在工程文件里写上
    if 登录窗口.showmodal=1 then application.run 
    else Application.Terminate;
    就可以了
      

  5.   

    好象好多人问过同样的问题。
    看看WM_SYSCOMMAND就行了。
      

  6.   

    postmessage(handle,WM_SYSCOMMAND,SC_MININAZE,0)
      

  7.   

    这个问题,你要先做一个系统托盘,然后在使窗体最小化的时候,调用API函数把他加入到任务拦就可以了
      

  8.   

    var  ex:integer;
    begin
      ex:=GetWindowLong(handle,GWL_EXSTYLE);
      SetWindowLong(handle,GWL_EXSTYLE,ex or WS_EX_APPWINDOW);
    end;
    这个是要最小化的窗口.
    login窗口就hide吧。或者application.showmainform:=false;
      

  9.   

    forgot,在formcreate()中setwindowlong