怎么取消系统菜单的移动功能?(100分)

  • 主题发起人 主题发起人 10End
  • 开始时间 开始时间
1

10End

Unregistered / Unconfirmed
GUEST, unregistred user!
当鼠标右键点标题栏时可以选择“移动”,然后鼠标会变成十字......
因为工作需要我不希望出现这个十字,我调用
DeleteMenu(GetSystemMenu(Handle,FALSE),SC_MOVE,MF_BYCOMMAND);
菜单项去掉了,但是用鼠标左键按住标题栏拖动form也不行了(这是我希望要的)
我调用
EnableMenuItem(GetSystemMenu(Handle,FALSE),SC_MOVE,MF_BYCOMMAND or MF_DISABLED);
EnableMenuItem(GetSystemMenu(Handle,FALSE),SC_MOVE,MF_BYCOMMAND or MF_GRAYED);
菜单项居然不会无效也不会变灰
我该怎么实现呢?谢谢!
 
在TForm1的private中
procedure OnNcRButtonDown (var msg: TMessage); message WM_NCRBUTTONDOWN;

procedure TForm1.OnNcRButtonDown (var msg: TMessage);
begin
// 空着,不调 inherited
end;
 
procedure move(var msg:TWMNCHITTEST);
message WM_NCHITTEST;

procedure tform1.move(var msg:TWMNCHITTEST);
begin
inherited;
if msg.Result=Htcaption then
msg.Result:=HTCLIENT;
end;
上述可以做到當光標在標題欄時,不允許移動。
 
xkliu:
左键点左上角,选移动,还是会出“十字”鼠标,怎么办?
zxb200:
我需要保留左键拖动而不是不要
 
不好意思,開始體解錯你的意思,用下面的:
procedure move(var msg:twmsyscommand);
message wm_syscommand;

procedure tform1.move(var msg:twmsyscommand);
begin
if msg.CmdType<>sc_move then
inherited;
end;
 
接受答案了.
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
496
import
I
后退
顶部