丶控制窗体不能 放大/缩小/移动/关闭 !
如何在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.