如何加一个背景图片,其位于最低层.
在打开MDI子窗体时, 不能被图片遮住.
在打开MDI子窗体时, 不能被图片遮住.
解决方案 »
- 请 mysterx 进来接分
- FTP更新文件损坏后怎么处理?
- edit如为空或不为数字时为0
- 强烈召唤被BS者 hthunter(核桃-春天过去了……)
- 三层发布的问题 !
- 【急】FastReport 中特殊字符显示问题???
- 如何生成一字符串的所有字符相同的类似字符串?在线等待,多谢了!
- Bs 这个拿这样的贴置顶版主(http://expert.csdn.net/Expert/topic/2445/2445820.xml?temp=.7370722)
- 送分题!!在线等待。
- 一个控件的问题
- 用DELPHI写的数据库程序,怎么会自动退出,求助
- 怎么动态添加treeview的子集项caption?
--------------------------------------------------------------------------------
主窗体中定义变量:
FClientInstance : TFarProc;
FPrevClientProc : TFarProc;
{ MDI的背景代码 }
procedure TMainForm.ClientWndProc(var Message: TMessage);
var
Dc : hDC;
Row : Integer;
Col : Integer;
begin
with Message do
case Msg of
WM_ERASEBKGND:
begin
Dc := TWMEraseBkGnd(Message).Dc;
// 在DC上平铺图象
for Row := 0 to ClientHeight div Image1.Picture.Height do
for Col := 0 to ClientWidth div Image1.Picture.Width do
BitBlt(Dc,
Col * Image1.Picture.Width,
Row * Image1.Picture.Height,
Image1.Picture.Width,
Image1.Picture.Height,
Image1.Picture.Bitmap.Canvas.Handle,
0,
0,
SRCCOPY);
Result := 1;
end;
else // 传递其他消息
Result := CallWindowProc(FPrevClientProc,
ClientHandle,
Msg,
wParam,
lParam);
end;
end;
- 在主窗体的OnShow事件中加入以下代码: // MDI背景平铺代码,与WndProc链接
FClientInstance := MakeObjectInstance(ClientWndProc);
FPrevClientProc := Pointer(GetWindowLong(ClientHandle,GWL_WNDPROC));
SetWindowLong(ClientHandle,GWL_WNDPROC,LongInt(FClientInstance));