1.限制大小在CanResize事件里!避免FORM最大化拦截消息!
2.刚写的例子:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, ComCtrls, ShellApi, ImgList, ExtCtrls, Menus;const
  WM_SYSTRAY = WM_USER + 1;
  IDI_TRAYICON = 0;type
  TForm1 = class(TForm)
    ImageList1: TImageList;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FWindowHandle: HWnd;
    FParentWindow: HWnd;
    FPopupMenu: TPopupMenu;
    FPopupAlign: TPopupAlignment;
    FIcon: TIcon;
    FIconData: TNotifyIconData;
    i:integer;
  public
    procedure WndProc(var Msg: TMessage);
  end;var
  Form1: TForm1;implementation
{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
FPopupAlign := paRight;
FParentWindow := Handle;
FWindowHandle := AllocateHWnd(WndProc);
i:=0;
FIcon := TIcon.Create;
Imagelist1.GetIcon(i,FIcon);
  With FIconData do
  begin
    uCallbackMessage:=WM_SYSTRAY;
    cbSize := SizeOf(FIconData);
    uID := IDI_TRAYICON;
    wnd := self.Handle;
    hIcon := FIcon.Handle;
    StrCopy(FIconData.szTip,'Hello');
    uFlags := NIF_ICON + NIF_TIP + NIF_MESSAGE;
  end;
  Shell_NotifyIcon(NIM_ADD, @FIconData);
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
i:=i+1;
if i=Imagelist1.Count then i:=0;
Imagelist1.GetIcon(i,FIcon);
FIconData.hIcon:=FIcon.Handle;
Shell_NotifyIcon(NIM_MODIFY, @FIconData);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @FIconData);
end;procedure TForm1.WndProc(var Msg: TMessage);
begin
if Msg.LParam=WM_LBUTTONDBLCLK then
begin
showmessage('左键双击!');
end;
end;
end.

解决方案 »

  1.   

    拦截最大化消息的例子:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
      TForm1 = class(TForm)
      private
       procedure WM_GETMINMAXINFO( var mmInfo : TWMGETMINMAXINFO ); message wm_GetMinMaxInfo;
        //最大化消息!
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}{ TForm1 }procedure TForm1.WM_GETMINMAXINFO(var mmInfo: TWMGETMINMAXINFO);
    begin
      with mmInfo.minmaxinfo^ do
      begin
        ptmaxposition.x := Screen.Width div 4;
        ptmaxposition.y := Screen.Height div 4;
        ptmaxsize.x := Screen.Width div 2; 
        ptmaxsize.y := Screen.Height div 2; 
      end;
    end;end.
      

  2.   

    那没办法,先去学习下什么是消息,什么是事件,什么是过程,什么是API!光会用现成的控件编程可不行!
      

  3.   

    谢谢!我会努力学的。今天是第5天了学DELPHI。呵呵。