我添加背景是用这种方法1、声明成员变量CBrush m_brush;
2、在InitDialog中添加代码:CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
m_brush.CreatePatternBrush(&bmp);
然后再往上拉控件的话 他会在控件前面有一个蓝色的竖线而且怎么让link control控件的背景为透明的

解决方案 »

  1.   

    刚刚看人发了个帖子 有提到  SetLayeredWindowAttributes()这个函数,不知道对你有没有用
      

  2.   

    我说的透明是 list control控件的背景  不是整个窗体
      

  3.   


    弱弱的问 为什么不直接 BitBlt 贴图上去呢?
      

  4.   

    你这个位图画刷 我只在孙老师的视频中见过 实际还没用过------------------------------得到位图的宽度   A
    得到你窗口的宽度 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();
    ...