怎么限制MDI子窗口不能移出父窗口(完全在父窗口内)
如题..完全在父窗口内
[解决办法]
难道现在你的MDI子窗口可以移出父窗口??
[解决办法]
用代码控制比较方便!
[解决办法]
如果真的是MDI子窗口的话,应该不可能移出其父窗口的。。。
[解决办法]
MDI子窗体移不出父窗体的
[解决办法]
据说可以拦截子窗体的OnMove事件,你再搜一下相关的内容。
[解决办法]
重载子窗体的WndProc,拦截WM_MOVING消息并作适当处理。以下例子假设Form2为子窗体,在Unit2中:
.h中:
protocted: void __fastcall WndProc(TMessage &Msg);
[解决办法]
//---------------------------------------void __fastcall TForm2::WndProc(TMessage &Msg){ if (Msg.Msg == WM_MOVING) { LPRECT lpRect = (LPRECT)Msg.LParam; // Application->MainForm->Caption = String().sprintf("%d,%d", lpRect->left, lpRect->top); TRect rctLimit = Application->MainForm->ClientRect; TPoint pt(rctLimit.Left, rctLimit.Top); ::ClientToScreen(Application->MainForm->Handle, &pt); if (lpRect->left < pt.x) lpRect->left = pt.x + 4; if (lpRect->top < pt.y) lpRect->top = pt.y + 4; if (lpRect->right > pt.x + rctLimit.Width()) lpRect->left = pt.x + rctLimit.Width() - Width - 4; if (lpRect->bottom > pt.y + rctLimit.Height()) lpRect->top = pt.y + rctLimit.Height() - Height - 4; lpRect->right = lpRect->left + Width; lpRect->bottom = lpRect->top + Height; } TForm::WndProc(Msg);}
[解决办法]
哈哈,自从遇上妖哥,这BCB就变得简单多了!