怎样在一个窗口里使另外一个窗口不能移动和改变大小(包括按最小化按钮)(50分)

  • 主题发起人 主题发起人 wyp8858
  • 开始时间 开始时间
W

wyp8858

Unregistered / Unconfirmed
GUEST, unregistred user!
我用findwindow找到我想要的窗口<br>我要让它不能移动和改变]大小,请高手指点,不胜感激!
 
不能改變大小,你可以將窗體屬性borderstyle設置成bsSingle<br>最小化按鈕你可以在bordericons中將biminimze設置成false將其取消<br>
 
不能移動你可以試試LockWindowUpdate,鎖定這個窗口
 
SetWindowLong//可以参考createwindow
 
各位高手误解我的意思了<br>我说的外部窗口,指的是我们预先不能设置的<br>比如quickreport的预览窗口<br>感谢各位高手再思!
 
发送消息了postmessage(handle,'消息',0,0)
 
请问abencat<br>你的'消息'要用什么呢,感谢指点
 
procedure TForm1.FormCreate(Sender: TObject);<br>var<br>&nbsp; hMenu: DWORD;<br>begin<br>&nbsp; hMenu := GetSystemMenu(Handle, False);<br>&nbsp; DeleteMenu(hMenu, SC_MOVE, MF_BYCOMMAND); // Disable moving<br>&nbsp; DeleteMenu(hMenu, SC_SIZE, MF_BYCOMMAND); // Disable sizing<br>&nbsp; ws_thickframe<br>end;<br><br>虽然可以通过删除系统菜单的大小项而使窗口不能改变大小<br>但是当鼠标指向边界的时候会改变形状<br>要改变这种情况可以使用下面的句子<br>procedure TForm1.FormCreate(Sender: TObject);<br>var<br>&nbsp; hMenu: DWORD;<br>begin<br>&nbsp; hMenu := GetSystemMenu(Handle, False);<br>&nbsp; DeleteMenu(hMenu, SC_MOVE, MF_BYCOMMAND);<br>&nbsp; //DeleteMenu(hMenu, SC_SIZE, MF_BYCOMMAND);<br>&nbsp; SetWindowLong(Handle,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; GWL_STYLE,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; GetWindowLong(Handle, GWL_STYLE) xor WS_THICKFRAME);<br>end;<br>
 
我的解决方案,让报表预览窗口无边框,处于顶端即可<br>var<br>&nbsp; &nbsp; hhWnd : HWND;<br>begin<br>&nbsp; &nbsp; hhWnd := findwindow('TQRStandardPreview','Print Preview');<br>&nbsp; &nbsp; setwindowlong(hhWnd,GWL_STYLE ,GetWindowLong(hhWnd, GWL_STYLE) and (not WS_BORDER) );<br>&nbsp; &nbsp; setwindowpos(hhWnd,hwnd_topmost,0,0,0,0,swp_nosize or swp_nomove);<br>&nbsp; &nbsp;end;
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部