怎样防止拖动窗口(20分)

  • 主题发起人 主题发起人 热血
  • 开始时间 开始时间

热血

Unregistered / Unconfirmed
GUEST, unregistred user!
我想一个窗口不能够被拖动,该怎样做?
 
如果你的Form Style=bsDialog,bsSizeToolWin,bsToolWindow
你只要截获WM_NCHITTEST就可以了,
procedure WMNCHitTest(var Msg: TWMNCHitTest);message WM_NCHitTest;
程序中:
procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
begin
inherited;
with Msgdo
if Result in[HTCAPTION] then
Result:= HTNOWHERE
end;

如果你的Form Style=bsSingle,bsSizable
你还要截获WM_INITMENUPOPUP
procedure WMInitMenuPopup(var Msg: TWMInitMenuPopup);
message WM_INITMENUPOPUP;
程序中:
procedure TForm1.WMInitMenuPopup(var Msg: TWMInitMenuPopup);
begin
inherited;
if Msg.SystemMenu then
EnableMenuItem(Msg.MenuPopup, SC_MOVE, MF_BYCOMMAND or MF_GRAYED)
end;

 
最简单的方法是你找From BorderStyle设为bsNone
 
最简单的办法是响应 WM_WINDOWSPOSCHANGING,将lpwp的Flags或上一个SWP_NOMOVE
就不会移动了,或上一个SWP_NOSIZE ...
 
试试看在onmousedown里加上
ReleaseCapture;
我没有试过,不过我想应该可以
 
多人接受答案了。
 
后退
顶部