.如何做出像东方快车,金山快译那样没有标题栏,没有最大,最小,关闭按钮,却可以随意移动,谢谢。

Monkeycn 2003-08-30 01:57:22
.如何做出像东方快车,金山快译那样没有标题栏,没有最大,最小,关闭按钮,却可以随意移动,谢谢。
...全文
35 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjff2000 2003-08-30
  • 打赏
  • 举报
回复
手边刚好有一个,哈哈。
unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure WMNChit(var msg:TWMNChitTest);
Message WM_NChitTest;
public
procedure CreateParams(var Params:TCreateParams);override;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
params.Style:=(params.Style or Ws_popup) and not ws_caption;
end;

procedure TForm1.WMNChit(var msg: TWMNChitTest);
begin
inherited;
if Msg.Result=htClient then
Msg.Result:=htCaption;
end;
end.
sailer_shi 2003-08-30
  • 打赏
  • 举报
回复
喂,我得代码就可以了,知道以前有一个软件叫我得助手吗
当你鼠标离开界面时,那个界面就会自动变小,这个就是那个程序其中一段代码(delphi)
给分吧
underwolf 2003-08-30
  • 打赏
  • 举报
回复
将form的BORDERSTYLE属性为BLNONE
然后在MOUSEDOWN事件中加入代码
代码为当鼠标按下时向WINDOWS送出标题栏被按下的消息就可以了
具体代码看一看API就知道了
fsybaby 2003-08-30
  • 打赏
  • 举报
回复
先设置Borderstyle


TYPE
procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;
........


实现部分
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited; { 调用默认的事件处理程序 }
if M.Result = htClient then M.Result := htCaption;
{如果是在Client区让Windows认为是在Caption区 }
end;
sailer_shi 2003-08-30
  • 打赏
  • 举报
回复
对了还要将Form的Borderstyle 设为bsnone
sailer_shi 2003-08-30
  • 打赏
  • 举报
回复
给你一段代码,我就是用这段代码实现你说的功能的
procedure TForm1.WMLButtonDown(var Msg:TMessage);
begin
SendMessage(Application.MainForm.Handle,WM_NCLButtonDown,HTCaption,0);
Click;
end;


procedure TForm1.CMMouseLeave(var Msg:TMessage);
begin
inherited;
if not Form1.Focused then
Form1.Width := 2
end;
你试一试
cupidvenus 2003-08-30
  • 打赏
  • 举报
回复
以上两位的综合起来就行了。
xiaoxiao197821 2003-08-30
  • 打赏
  • 举报
回复
上面两个合起来就ok了
bestluo 2003-08-30
  • 打赏
  • 举报
回复
修改FORM的BORDERSTYLE属性就可以了
ehom 2003-08-30
  • 打赏
  • 举报
回复
procedure WMHitTest (var Msg: TWMNCHitTest);message WM_NCHITTEST;

procedure TForm.WMHitTest(var Msg: TWMNCHitTest);
var
pt:TPoint;
begin
inherited;
pt:=Point(Msg.xPos,Msg.yPos);
pt:=ScreenToClient(pt);
if (Msg.result = HTCLIENT) and (pt.Y <= 25) then Msg.Result := HTCAPTION;
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧