张志峰的博客

水滴石川,积少成多。

导航

delphi 隐藏标题栏

Posted on 2017-10-25 10:54  ╰★张志峰★╮  阅读(2208)  评论(0编辑  收藏  举报

 

 
1.隐藏窗体的标题栏
Delphi中隐藏窗体的标题栏,相信大家都会说是一个件十分容易的事情,只需要设置BorderStyle的属性为bsNone就可以了,不过这种设置方法不但去掉了窗体的标题栏,而且也去掉了窗体的3D边框,这样就显得不好看了,那么请大家试试下面的方法吧。
procedure TForm1.FormCreate(Sender: TObject);
begin
setwindowlong(form1.Handle,gwl_style,getwindowlong(handle,gwl_style) and not ws_caption);
height:=clientheight;//隐藏标题栏
end;


2.在标题栏中显示文字标题
要在窗体的标题栏中显示文字信息,可以先获取此窗体的句柄,然后使用画布(Canvas)在此窗体的标题栏中绘制出文字,根据需要可以对文字的字体大小和颜色进行设置。
procedure TForm1.Button1Click(Sender: TObject);
var
dc:hdc;
cvs:tcanvas;
begin
dc:=getwindowdc(handle);//取得窗体的句柄
cvs:=tcanvas.Create;
cvs.Handle:=dc;
cvs.Font.Size:=11;//设置字体大小
cvs.Brush.Color:=rgb(222,222,9);//背景颜色
cvs.TextOut(100,8,'标题栏文字');//绘制文字
releasedc(handle,dc);//释放句柄
end;


3.在任务栏中隐藏窗体的图标
在Windows中运行程序时,往往此程序的图标都会出现在任务栏中,但也有一些特殊的程序禁止了这种做法,如一些监控程序等,其实要实现这种效果也有好多种方法,下面是其中的一种。
procedure TForm1.FormCreate(Sender: TObject);
begin
showwindow(application.handle,sw_hide); //隐藏图标
setwindowlong(application.Handle,gwl_exstyle,
getwindowlong(application.Handle,gwl_exstyle) or ws_ex_toolwindow and not ws_ex_appwindow);
//设定窗体在状态栏处不可见状态
end;