给对话框添加背景图片的方法

  今天决定写个模仿金山霸界面的VC程序,但是不知道怎样给对话框添加背景图片。于是上网找了些资料,现在学一点总结一点,最后再把各种方法在实践中的“表现”都理出来。

 

 

  方法一:

        1,给对话框添加成员变量    CBrush   m_Brush;  
        2,在对话框的构造函数中添加  
           CBitmap   bm;  
           bm.LoadBitmap(IDB_BITMAP1);   //   IDB_BITMAP1为BITMAP资源ID,可以指定bitmap图片的路径   
           m_Brush.CreatePatternBrush(&bm);  
        3,添加   WM_CTLCOLOR   消息处理函数,把   return   hbr;   改为   return   m_Brush;  

 

        总结:我把成员变量放在 “仿毒霸界面Dlg.h” 这个头文件中,把IDB_BITMAP1改为自已资源中的图片ID。然后背景添加成功!但是不理想,问题有:图片只在客户区显示,各控件不透明使正是界面看起来很乱很脏。

 

       又看了好几个例子后发现显示图片需要知道三点:

       1,获得欲进行绘图的设备环境句柄(即CDC的子类DC);

       2,定义图形对像(GDI中的CBitmap);

       3,获得绘图的范围(CRect);

      例如显示一张资源中的bmp位图:

       CDC            bdc;         //定义环境变量对像

       CBitmap     bipmap;   //定义图形对像

       CRect          rect;         //定义用于存储绘图范围的变量

       bdc.CreateCompatibleDC(&dc);                 //dc是欲进行绘图的环境变量,比如OnPaint消息中的CPaintDC dc(this);在不同函数中可用获得dc的函数得到dc值。该函数的做用是将bdc申请为一个dc模式的内存空间,以用来存放位图。

      bitmap.LoadBitmap(IDB_BUTTON1);     //IDB_BUTTON1是资源中位图的ID,该函数作用是把位图加载到图形设备对像中。

      bdc.SelectObject(bitmap);                           //这一步是把位图放入内存空间。

      dc.BitBlt(0,0.rect.right,rect.button,&bdc,0,0,SRCCOPY);  //该函数是dc用成员函数BitBlt将bdc中的位图显示到屏幕上。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值