如何禁止用户移动窗口

maggiesky 2003-05-09 05:14:15
在窗口不是最大化的时候怎么样设置,让用户无法移动窗口
...全文
374 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
microjuz 2003-05-27
  • 打赏
  • 举报
回复
收藏!!
Intelement 2003-05-25
  • 打赏
  • 举报
回复
procedure TForm1.FormCreate(Sender: TObject);
var
hSysMenu: HMENU;
begin
hSysMenu := GetSystemMenu(Handle, False);
//禁止用户移动窗体
DeleteMenu(hSysMenu, SC_MOVE, MF_BYCOMMAND);
//...
end;

//友情赠送以下代码 :)

procedure TForm1.FormCreate(Sender: TObject);
var
hSysMenu: HMENU;
begin
//禁止用户关闭窗体
DeleteMenu(hSysMenu, SC_CLOSE, MF_BYCOMMAND);
//删除系统菜单中的分栏符
DeleteMenu(hSysMenu, 0, MF_BYCOMMAND);
//禁止用户改变窗体大小
DeleteMenu(hSysMenu, SC_SIZE, MF_BYCOMMAND);
//禁止用户最小化窗体(最小化按钮并非变灰)
DeleteMenu(hSysMenu, SC_MINIMIZE, MF_BYCOMMAND);
//禁止用户最大化窗体(最大化按钮并非变灰)
DeleteMenu(hSysMenu, SC_MAXIMIZE, MF_BYCOMMAND);
//禁止用户恢复窗体大小(恢复并非变灰)
DeleteMenu(hSysMenu, SC_RESTORE, MF_BYCOMMAND);
end;

//要想恢复默认系统菜单,使用
GetSystemMenu(Handle, True)

wxjh 2003-05-25
  • 打赏
  • 举报
回复
EnableWindow,让目标窗体无效
lili1 2003-05-25
  • 打赏
  • 举报
回复
naughtyboy(一切都是为了明天) ( ) 就这个了。
microjuz 2003-05-25
  • 打赏
  • 举报
回复
关注一下
fuyankuncn 2003-05-25
  • 打赏
  • 举报
回复
把标题栏去掉,边线设无不就行了吗?
tianliangle2003 2003-05-25
  • 打赏
  • 举报
回复
我认为 glassesboy的方法好
naughtyboy的方法会使标题栏不可用
nzh517 2003-05-10
  • 打赏
  • 举报
回复
我很菜,看了我的代码不要笑,多提意见
1:禁止鼠标拖动标题栏
在private部分加入
procedure WMNCLBUTTONDOWN(var msg:TMessage);message WM_NCLBUTTONDOWN;
在实现部分加入:
procedure TForm1.WMNCLBUTTONDOWN(var msg: TMessage);
begin
if msg.WParam= HTCAPTION then
SendMessage(self.Handle,WM_LBUTTONUP,0,0)
else
inherited;
end;
2:把"移动"从控制菜单移除(代码我不会写)谁来补上

nzh517 2003-05-10
  • 打赏
  • 举报
回复
To: maozefa(之源)
好象你的方法不行,没道理呀
naughtyboy 2003-05-10
  • 打赏
  • 举报
回复
private
{ Private declarations }
procedure WMNCHitTest(var msg: TWMNCHitTest);message wm_nchittest;

procedure TForm1.WMNCHitTest(var msg: TWMNCHitTest);
begin
if msg.Result = htcaption then
msg.Result := htClient;

end;
nzh517 2003-05-10
  • 打赏
  • 举报
回复
To:glassesboy(glassesboy)

把代码贴出来让我学学,谢谢,,,,
glassesboy 2003-05-10
  • 打赏
  • 举报
回复
通过WM_WINDOWPOSCHANGING消息判断
nzh517 2003-05-10
  • 打赏
  • 举报
回复
学习了一下,上面说的第二条,在FormCreate中加入
DeleteMenu( GetSystemMenu(Handle, False),SC_MOVE,MF_BYCOMMAND);
就行了,
Olamny 2003-05-10
  • 打赏
  • 举报
回复
Val函数

Code:integer;
i:integer;//Or other type

Val(YourInputString,i,Code);

如果返回 Code=0,是数值,i 即为结果数值。
阿发伯 2003-05-09
  • 打赏
  • 举报
回复
Form1.BorderStyle.bsSingle改为
Form1.BorderStyle := bsSingle
阿发伯 2003-05-09
  • 打赏
  • 举报
回复
Form1.BorderStyle.bsSingle
maggiesky 2003-05-09
  • 打赏
  • 举报
回复
谁能帮我一下

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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