1,如何拦截'双击窗体标题栏',不能让其最大化?2,如何拦截窗体关闭按钮?

解决方案 »

  1.   

    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure WndProc(var Msg: TMessage); override;
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      BorderIcons := [biSystemMenu, biMinimize];
    end;procedure TForm1.WndProc(var Msg: TMessage);
    begin
      Msg.Result := 0;
      case Msg.Msg of
        WM_SYSCOMMAND:
          if Msg.WParam = SC_ZOOM then Exit;
        WM_NCLBUTTONDBLCLK: Exit;
      end;
      inherited;
    end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      CanClose := MessageDlg('退?', mtWarning, [mbYes, mbNo], 0) = mrYes;
    end;
      

  2.   

    procedure WMSysCommand(var Message: TMessage);message WM_SYSCOMMAND;
        procedure WMNclButtonDblClk(var Message: TMessage);message WM_NCLBUTTONDBLCLK;//屏蔽标题栏双击
    procedure TForm1.WMNclButtonDblClk(var Message: TMessage);
    beginend;//屏蔽部分系统消息
    procedure TForm1.WMSysCommand(var Message: TMessage);
    begin
      with Message do
        case WParam of
          SC_MAXIMIZE:;//最大化
          SC_SIZE:;//改变大小
          SC_RESTORE:;//还原
        else
          inherited;
        end;
    end;