谁能让MDI的子窗口在主窗口里移动的时候,主窗口的滚动条不出现(100分!!!!)(100分)

  • 主题发起人 主题发起人 zsy1019
  • 开始时间 开始时间
Z

zsy1019

Unregistered / Unconfirmed
GUEST, unregistred user!
谁能让MDI的子窗口在主窗口里移动的时候,主窗口的滚动条不出现???
是用代码实现或是只要设置主窗体的属性罢了。回答者请详细一点。我是新手!
thank you!
(大家知道,如果是非MDI类型的窗体,就很好解决了!)
 
procedure CreateParams( var Params : tCreateParams );override;

implimentation//中写如下代码:

procedure TForm1.CreateParams(var Params : tCreateParams ) ;

begin

inherited;

Params.Style:=Params.Style and (not (WS_HSCROLL or WS_VSCROLL));

end;
 
那主窗体上放一个控件,如PANEL,启动时,怎样才能使该控件不覆盖子窗体呢
 
To TMXYB
你的方法我試了﹐不行﹗
 
转贴:
加上如下的回调函数

Function ClientWindowProc( wnd: HWND; msg: Cardinal; wparam, lparam: Integer ): Integer; stdcall;
Var
pUserdata: Pointer;
Begin
pUserdata:= Pointer( GetWindowLong( wnd, GWL_USERDATA ));
Case msg of
WM_NCCALCSIZE: Begin
If (GetWindowLong( wnd, GWL_STYLE ) and (WS_HSCROLL or WS_VSCROLL)) <> 0 Then
SetWindowLong( wnd, GWL_STYLE, GetWindowLong(wnd, GWL_STYLE) and not (WS_HSCROLL or WS_VSCROLL));
End;
End;
Result := CallWindowProc(pUserdata, wnd, msg, wparam, lparam );
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
// ShowScrollBar(mainform.clienthandle, SB_BOTH, false );
If ClientHandle <> 0 Then Begin
If GetWindowLong( ClientHandle, GWL_USERDATA ) <> 0 Then Exit;

// 加上回调句柄
SetWindowLong( ClientHandle, GWL_USERDATA, SetWindowLong( ClientHandle, GWL_WNDPROC, integer( @ClientWindowProc)));
End;
end;
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=869903
http://www.delphibbs.com/delphibbs/dispq.asp?lid=203257
 

Similar threads

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