假设文本框控件变量为 m_Static,为此文本框添加位图有两种方式:
一是:文本框随位图大小而改变 一是:位图尺寸与文本框尺寸相同,这两种方式都是通过修改Dlg::OnInitDialog()函数来实现的
方式一:静态文本框大小随位图大小而改变
步骤:
在工程中添加位图资源:IDB_BITMAP
首先创建位图对象
CBitmap bitmap;
其次装载位图
bitmap.LoadBitmap(IDB_BITMAP);
然后修改静态文本框类型
m_Static.ModifyStyle(NULL,SS_BITMAP,SWP_NOSIZE);
最后,为静态文本框设置位图
m_Static.SetBitmap((HBITMAP)bitmap.Detach());
//创建位图对象 CBitmap bm; //加载位图资源 bm.LoadBitmap(IDB_BITMAP1); //修改静态文本框类型 m_Staic.ModifyStyle(NULL,SS_BITMAP,SWP_NOSIZE); //为文本框加载位图 m_Staic.SetBitmap((HBITMAP)bm.Detach());
使用这种方法无法控制位图大小,尝试多多种修改方法,均无法完成,只好用下面的方法,直接从文件读取指定大小的位图
方式二:图尺寸与文本框尺寸相同
步骤:
一):首先获取静态文本框大小
CRect rect;
m_Static.GetWindowRect(&rect);
二):使用LoadImage从文件读取指定大小位图
HBITMAP hBmp= (HBITMAP)::LoadImage(NULL,_T("F://1.bmp"),IMAGE_BITMAP,rect.Width(),rect.Height(),LR_LOADFROMFILE);
三):修改文本框类型及向文本框加载位图
m_Staic.ModifyStyle(NULL,SS_BITMAP);
m_Staic.SetBitmap(hBmp);
CRect rect; m_Staic.GetWindowRect(&rect); HBITMAP hBmp=(HBITMAP)::LoadImage(0,_T("F://1.bmp"),IMAGE_BITMAP,rect.Width(),rect.Height(),LR_LOADFROMFILE); m_Staic.ModifyStyle(NULL,SS_BITMAP); m_Staic.SetBitmap(hBmp);
参考资料:
http://blog.sina.com.cn/s/blog_5cec38f30100bml0.html
http://dev.csdn.net/author/starlee/7573b9f8c9aa4cbea17258e4f3637d30.html
http://www.cnblogs.com/pfa2008/archive/2010/01/25/1655947.html
http://blog.csdn.net/Antoinette/archive/2010/07/12/5729708.aspx