丶控制窗体不能 放大/缩小/移动/关闭 !

如何在Delphi中把Form控制成不能放大/缩小/移动/关闭的窗体,可进行如下步骤:
  1.把Form的BorderIcons下的几个子属性值全改为False;
  2.修改Form的BorderStyle的值为bsSingle;
  3.为了让窗口不能移动,可以自已拦下WM_NCHITTEST消息,对该消息的处理为:一概回应鼠标点在窗口的Client区域, 相信这个视窗就不会动了。
	4.附送两个小函数实例中有说明!

下面是源码实例

unit Unit1;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm1 = class(TForm)

btn1: TButton;

btn2: TButton;

btn3: TButton;

procedure FormCreate(Sender: TObject);

procedure btn1Click(Sender: TObject);

procedure btn2Click(Sender: TObject);

procedure btn3Click(Sender: TObject);

private

procedure HideTaskbar; //隐藏任务栏

procedure ShowTaskbar; //显示任务栏

procedure WMNCHitTest(var Msg: TMessage); message WM_NCHITTEST;

public

{ Public declarations }

end;

var

Form1:TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);

begin

HideTaskbar;

end;

procedure TForm1.btn2Click(Sender: TObject);

begin

ShowTaskbar;

end;

procedure TForm1.btn3Click(Sender: TObject);

begin

Close; //这个必须 哈哈 不然没法关闭了

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

 Form1.Caption := '当前的分辨率为:X ' + IntToStr(GetSystemMetrics(SM_CXSCREEN)) + ' Y ' + IntToStr(GetSystemMetrics(SM_CYSCREEN));

end;

procedure TForm1.WMNCHitTest(var Msg: TMessage);

begin

inherited; // 这样,移动就不可能了

Msg.Result := HTCLIENT; //固定窗体 不能 移动

//if Msg.Result=HTCLIENT then

//Msg.Result := HTCAPTION;

end;

{******************************************************************************}

{ 附送两个 函数 功能分别是 隐藏任务栏 和 显示任务栏!}

{******************************************************************************}

procedure TForm1.HideTaskbar; //隐藏

var

wndHandle : THandle;

wndClass : array[0..50] of Char;

begin

StrPCopy(@wndClass[0], 'Shell_TrayWnd');

wndHandle := FindWindow(@wndClass[0],nil);

ShowWindow(wndHandle, SW_HIDE);

end;

procedure TForm1.ShowTaskbar;

var

wndHandle : THandle;

wndClass : array[0..50] of Char;

begin

StrPCopy(@wndClass[0], 'Shell_TrayWnd');

wndHandle := FindWindow(@wndClass[0], nil);

ShowWindow(wndHandle, SW_RESTORE);

end;

end. 

posted @ 2011-09-21 16:50  Delphi爱好者  阅读(1367)  评论(0编辑  收藏  举报