我添加背景是用这种方法1、声明成员变量CBrush m_brush;
2、在InitDialog中添加代码:CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
m_brush.CreatePatternBrush(&bmp);
然后再往上拉控件的话 他会在控件前面有一个蓝色的竖线而且怎么让link control控件的背景为透明的
2、在InitDialog中添加代码:CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
m_brush.CreatePatternBrush(&bmp);
然后再往上拉控件的话 他会在控件前面有一个蓝色的竖线而且怎么让link control控件的背景为透明的
弱弱的问 为什么不直接 BitBlt 贴图上去呢?
得到你窗口的宽度 BB/A+1 就是你循环的次数 然后再往窗口上贴PS:双缓冲先往内存DC中贴
最后bitblt到窗口
参考代码:
//加载位图
CBitmap bmp, *pOldBmp, memBmp, *pOldMemBmp;
bmp.LoadBitmap(IDB_BITMAP_FRAME); //得到位图信息
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
m_nBmpWidth = bmpInfo.bmWidth;
m_nBmpHeight = bmpInfo.bmHeight; //创建DC 兼容DC
CClientDC dc(this);
CDC memDC, memBmpDC;
memDC.CreateCompatibleDC(&dc); CRect rect;
GetClientRect(&rect); memBmp.CreateCompatibleBitmap(&dc, rect.Width(), m_nBmpHeight);
pOldMemBmp = memDC.SelectObject(&memBmp); memBmpDC.CreateCompatibleDC(&dc);
pOldBmp = memBmpDC.SelectObject(&bmp); for (int i = 0; i < rect.Width()/m_nBmpWidth + 1 ; i++)
{
memDC.BitBlt(i * m_nBmpWidth, 0, m_nBmpWidth, m_nBmpHeight, &memBmpDC, 0, 0, SRCCOPY);
}
...
... dc.BitBlt(0, 0, rect.Width(), m_nBmpHeight, &memDC, 0, 0, SRCCOPY);...
memBmpDC.SelectObject(pOldBmp);
memDC.SelectObject(pOldFont);
memDC.SelectObject(pOldMemBmp);
memBmpDC.DeleteDC();
...