请问有谁知道缩放窗口中的某一区域????(200分)

  • 主题发起人 主题发起人 xieaining
  • 开始时间 开始时间
X

xieaining

Unregistered / Unconfirmed
GUEST, unregistred user!
请问有谁知道缩放窗口中的某一区域????
 
放一个Panel
 
或者放个Frame
 
请问有谁知道缩放窗口中的某一区域????不是缩放某一个控件,(是别的程序嵌入到我的程序)
放大他的某一部分。?????
 
SetWindowPos()?
 
panel 有 ScaleBy 方法
 
转贴
您可以覆写 CreateParams() 这个 TWinControl 的虚拟程序, 改变 form的 wc.Style, 将 WS_SYSMENU 这个旗标解除, 这样, 就不会有左上角的
SystemMenuBox 了.
至於不能移动.缩小/放大, 可以自已拦下 WM_NCHITTEST, 然後一概回应滑鼠点在视窗的 Client 区域, 相信这个视窗就呆呆的不会动了.
详情可以查一下 Win32API Help 的 CreateWindow() 与 WM_NCHITTEST 的说明.


unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure WMNCHitTest(var Msg: TMessage);
message WM_NCHITTEST;
protected
procedure CreateParams(var Params: TCreateParams);
override;
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
Style := Style xor WS_SYSMENU;
// 去除 SystemMenuBox
// 如果要将视窗极大化, 请参考以下这行
//Style := Style xor WS_SYSMENU or WS_MAXIMIZE;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
// 不可少, 因为已经使用者已经没有其他方法关闭此视窗了
end;

procedure TForm1.WMNCHitTest(var Msg: TMessage);
begin
inherited;
// 这样, 放大/缩小/移动都不可能了...
Msg.Result := HTCLIENT;
end;

end.

 
子类化其他窗体。
 
后退
顶部