【请问怎样使窗体不能移动】(20分)

  • 主题发起人 主题发起人 liujunzhang
  • 开始时间 开始时间
L

liujunzhang

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:你们好!小弟想问的问题是:如何在delphi中使窗体在运行的时候,
不能被使用者移动,那永远固定下来.
 
Form1.BorderStyle:=bsNone;
 
截获MSG消息!
 
嘿嘿,看看这个:
public:
procedure wmnchittest(var msg:twmnchittest);message wm_nchittest;
//客户区拖动窗体
procedure tform1.wmnchittest(var msg:twmnchittest);
begin
inherited;
if msg.Result=htclient then
msg.Result :=htcaption;
end;
呵呵,要符合你的要求这样就可以了吧?:
public:
procedure wmnchittest(var msg:twmnchittest);message wm_nchittest;
//客户区拖动窗体
procedure tform1.wmnchittest(var msg:twmnchittest);
begin
inherited;
if msg.Result=htcaption then
msg.Result :=htclient;
end;
 
硬木花椒:
你好!你的方法固然很好,可是却使我的窗体标题不能使用,
这样又不适合我的要求,想想你的代码也不过如此而已,我想应该
还有其它方法,既能使窗体不能移动,又能使用窗体标题栏的操作
 
我也没有什么好办法,就是重载Windows消息了,程序如下:
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure MYOnMove(var Message:TMessage); Message WM_WINDOWPOSCHANGING;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.MYOnMove(var Message:TMessage);
type
PWINDOWPOS=^tagWINDOWPOS;
begin
PWINDOWPOS(Message.LParam)^.x:=Left;
PWINDOWPOS(Message.LParam)^.y:=Top;
inherited;
end;
如合意,帮小弟看一下:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1083246
 
不要标题栏,
 
后退
顶部