CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

在MDI窗体中用图片做背景

楼主atdawn(请稍候...)2002-05-05 15:42:37 在 C++ Builder / 基础类 提问

在MDI窗体中用图片做背景。 问题点数:10、回复次数:12Top

1 楼atdawn(请稍候...)回复于 2002-05-05 15:43:16 得分 0

如何做到啊?Top

2 楼goldenfinger413(青云独步)回复于 2002-05-05 16:07:09 得分 0

通过虚拟函数,将图片一点点的画上去的.  
  Top

3 楼atdawn(请稍候...)回复于 2002-05-05 16:10:28 得分 0

通过一个API函数可以做到的,我只是记不得了。Top

4 楼ken_henderson( )回复于 2002-05-05 17:03:53 得分 0

到vc论坛搜索一下多的是Top

5 楼silver_sky(挪威森林)回复于 2002-05-05 17:23:16 得分 0

void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
   
          Graphics::TBitmap*   aa   =   new   Graphics::TBitmap   ;  
   
          OpenDialog1->Execute()   ;  
          aa->LoadFromFile(OpenDialog1->FileName)   ;  
   
   
          for(int   i=0;   i<aa->Width;   i++)  
          {  
                  for(int   j=0;   j<aa->Height;   j++)  
                  {  
                          Form1->Canvas->Pixels[i][j]   =   aa->Canvas->Pixels[i][j]   ;  
                  }  
          }  
  }Top

6 楼atdawn(请稍候...)回复于 2002-05-05 20:14:03 得分 0

大哥,上面的方法不行。Top

7 楼suncisco(suncisco)回复于 2002-05-05 20:20:04 得分 0

用个PICTUREBOX!Top

8 楼atdawn(请稍候...)回复于 2002-05-06 10:33:44 得分 0

是MDI窗体的背景,没有那么简单的啊。  
  BCB中也没有PictureBox啊。Top

9 楼Kabin() 加点冰 ()回复于 2002-05-06 11:46:42 得分 0

void   __fastcall   TMainForm::DrawClientWindow(HDC   &   Hdc)  
  {  
            TRect   rect;  
            ::GetClientRect(ClientHandle,(RECT   *)&rect);  
            int   left,top;  
            //   使用Windows   API函數BitBlt  
            for   (int   i=0;i<ClientHeight/BGBitmap->Height+1;i++)  
            for   (int   j=0;j<ClientWidth/BGBitmap->Width+1;j++){  
                      left=j*BGBitmap->Width;  
                      top=i*BGBitmap->Height;  
                      ::BitBlt(Hdc,left,top,left+BGBitmap->Width,top+BGBitmap->Height,  
                      BGBitmap->Canvas->Handle,0,0,SRCCOPY);  
            }  
  }Top

10 楼atdawn(请稍候...)回复于 2002-05-06 13:34:23 得分 0

你说的是不是VC的内容啊,BCB中没有这个事件过程啊。Hdc是如何获得的。Top

11 楼atdawn(请稍候...)回复于 2002-05-06 13:38:10 得分 0

请用一个API就解决问题,好吗?  
  不要瞎写,好不好,发了这么多帖子,问题也没觖决。Top

12 楼liemen()回复于 2002-05-06 13:47:48 得分 10

在头文件中加入:  
          long   OriginalClientProc;  
          HANDLE   ClientObjectInstance;  
          Graphics::TBitmap   *MdiFormImage;  
          TCanvas   *MdiClientCanvas;  
          TRect   MdiFormImageRect;  
   
          void   __fastcall   MdiClientProc(TMessage&   Msg);  
   
  在OnCreate中加入:  
          MdiFormImage   =   new   Graphics::TBitmap;  
          MdiClientCanvas   =   new   TCanvas;  
          MdiFormImage->LoadFromFile("图片文件");  
          MdiClientCanvas->Handle   =   GetDC(ClientHandle);  
          MdiFormImageRect   =   Rect(0,0,MdiFormImage->Width,MdiFormImage->Height);  
          ClientObjectInstance   =   MakeObjectInstance(MdiClientProc);  
          OriginalClientProc   =   GetWindowLong(ClientHandle,   GWL_WNDPROC);  
          SetWindowLong(ClientHandle,   GWL_WNDPROC,   (long)ClientObjectInstance);  
   
  在OnClose中加入:  
          if(   ClientObjectInstance   !=   NULL   )   {  
  SetWindowLong(ClientHandle,GWL_WNDPROC,OriginalClientProc);  
        FreeObjectInstance(ClientObjectInstance);  
          delete   MdiFormImage;  
                  delete   MdiClientCanvas;  
          }  
   
  实现函数:  
  void   __fastcall   TLotMainForm::MdiClientProc(TMessage&   Msg)  
  {  
  if(   Msg.Msg   ==   WM_ERASEBKGND   )   {  
          MdiClientCanvas->CopyRect(   ClientRect,   MdiFormImage->Canvas,   MdiFormImageRect   );  
                  Msg.Result   =   true;  
          }   else   {  
          Msg.Result   =   CallWindowProc((FARPROC)OriginalClientProc,ClientHandle,Msg.Msg,Msg.WParam,Msg.LParam);  
                  if(   Msg.Msg   ==   WM_HSCROLL   )  
                  InvalidateRect(ClientHandle,0,true);  
  }  
  }  
   
  在BCB5上通过!  
   
  Top

相关问题

  • 如何设MDI窗体背景图片?
  • HOW TO:MDI子窗体2的背景图片为MDI子窗体1中PictureBox1.Image?
  • 如何给MDI窗体加背景图片?(JPEG)
  • *****MDI父窗体设置背景图片的问题*****
  • 怎样给一个mdi父窗体加上图片背景??
  • 怎么使MDI窗体的背景图片最大化?
  • mdi窗体加背景图片!抢分了
  • 请问怎么给MDI窗体加上一个背景图片
  • 各位高手,在MDI主窗体中怎样显示背景图片???????
  • MDI窗体的背景图片,怎么会在toolbar上面也显示了.?

关键词

  • 函数
  • top
  • api
  • mdiformimage
  • bgbitmap
  • clientobjectinstance
  • mdiclientcanvas
  • clienthandle
  • mdi窗体
  • mdiclientproc

得分解答快速导航

  • 帖主:atdawn
  • liemen

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo