2007/09/03(Mon) 01:01:44 編集(投稿者)
■No7246 (Apiece さん) に返信
> 教えていただいたことをヒントに、下記のようなコードをフォーム内に書くことで、実現することが出来ました。
> //ドラッグ中にウィンドウの内容を表示する。
> protected override void WndProc(ref Message m)
> {
> switch (m.Msg)
> {
> case 0x214 : //WM_SIZING
> case 0x216 : //WM_MOVING
> Rectangle r = (Rectangle)Marshal.PtrToStructure(m.LParam, typeof(Rectangle));
> this.Location = r.Location;
> this.Size = new Size(r.Width - r.Left, r.Height - r.Top);
> break;
> }
> base.WndProc(ref m);
Rectangle構造体はx,y,w,hでRECT構造体はl,t,r,bなので無理して使わないほうがいいですよ。
それにLocationとSizeと2回設定するとLayoutルーチンを2回通るのでよくないです。
Int32[] rect = new Int32[4];
System.Runtime.InteropServices.Marshal.Copy(m.LParam, rect, 0, 4);
this.SetBounds(rect[0], rect[1], rect[2] - rect[0], rect[3] - rect[1]);