登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

... ...

 
 
 

日志

 
 

VC++6.0更改窗口背景图的练习  

2008-11-26 11:00:18|  分类: VC++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

程序运行结果如下

VC++6.0更改窗口背景图的练习 - 加菲 - 视频会议 - 加菲
 

在未更改背景图前的效果

VC++6.0更改窗口背景图的练习 - wmnmtm - 我们你们它们

上述效果,是去掉了标题栏,在刚刚新建完工程时,其本身为一个最普通的对话框,只是加了一行代码进行了修改,以下为初始的对话框效果

VC++6.0更改窗口背景图的练习 - wmnmtm - 我们你们它们

 保留标题栏,只更改背景图:

VC++6.0更改窗口背景图的练习 - wmnmtm - 我们你们它们 

 

 以下,是关键的代码:

 ************************************************

***    http://wmnmtm.blog.163.com    ***

************************************************

 ModifyStyle( WS_CAPTION, WS_MINIMIZEBOX, SWP_DRAWFRAME ); //去掉标题栏
 SetWindowText("窗口标题");//设置对话框的标题

 

 m_bmpBackground.LoadBitmap(IDB_BITMAP1);     // 窗体背景图片//

 


void CTestDlg::OnPaint()
{
 if (IsIconic())
 {
  CPaintDC dc(this); // device context for painting

  SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

  // Center icon in client rectangle
  int cxIcon = GetSystemMetrics(SM_CXICON);
  int cyIcon = GetSystemMetrics(SM_CYICON);
  CRect rect;
  GetClientRect(&rect);
  int x = (rect.Width() - cxIcon + 1) / 2;
  int y = (rect.Height() - cyIcon + 1) / 2;

  // Draw the icon
  dc.DrawIcon(x, y, m_hIcon);
 }
 else
 {
  //CDialog::OnPaint();
  //这段装载背景图
  CPaintDC dc(this);    //对话框的dc//CPaintDC是从CDC派生出来的。在构造时自动调用CWnd::BeginPaint,析构时调用CWnd::EndPaint。通常CPaintDC用来响应WM_PAINT消息。一般应用在OnPaint函数
  CDC dcMem;
  dcMem.CreateCompatibleDC(&dc);   //创建与对话框dc兼容的内存dc

  CRect rect;
  GetClientRect(&rect);//该函数获取窗口客户区的坐标。

  BITMAP bitMap;
  m_bmpBackground.GetBitmap(&bitMap);//好像是设置背景图

  CBitmap *pbmpOld=dcMem.SelectObject(&m_bmpBackground);  //将背景位图选入内存dc中

dc.SetStretchBltMode(HALFTONE);//这句保证放缩后不失真
  dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);   //将内存dc中的位图拉伸显示在对话框的dc中
  //dc.BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);

 }
}

 

 

第一步,定义一个CBitmap对象CBitmap m_bmpBackground;

第二步,用m_bmpBackground.LoadBitmap(IDB_BITMAP1);将资源文件中的图片载入;

第三步,

 

 

 

 //上面是从资源文件载入,下面改成从位图文件载入

// m_bmpBackground.LoadBitmap(IDB_BITMAP1);     // 窗体背景图片//

LoadBmpPic("c:\\1.bmp", m_bmpBackground);




bool CDlgVideo::LoadBmpPic(const CString strBmpPath, CBitmap &bmp)

{

HBITMAP bitmap;

try

{

bmp.Detach();

bitmap = (HBITMAP)::LoadImage(NULL,strBmpPath, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE|LR_DEFAULTSIZE);

if (bmp.Attach(bitmap))

return true;

}

catch(...)

{

return false;

}

return true;

}

  评论这张
 
阅读(5190)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018