如题
使用SetBkImage()函数设置背景之后,它的大小默认的是原本的图片大小.
如何设置图片填充整个屏幕?

解决方案 »

  1.   

    TCHAR szBuffer[_MAX_PATH]; 
    VERIFY(::GetModuleFileName(AfxGetInstanceHandle(), szBuffer, _MAX_PATH));
    CString sPath;
    sPath.Format(_T("res://%s/#2/#142"),szBuffer);LVBKIMAGE bki;
    bki.ulFlags = LVBKIF_STYLE_TILE | LVBKIF_SOURCE_URL ;
    bki.pszImage = sPath.GetBuffer(sPath.GetLength());
    bki.cchImageMax = sPath.GetLength();
    VERIFY(m_cListCtrl.SetBkImage( &bki));在bki.ulFlags里设置
    LVBKIF_STYLE_TILE属性就可以了
      

  2.   

    设置好listctrl的背景后,怎么不能刷新显示了呢?
      

  3.   

    不是的,不需要将图片转换成一定大小看不明白的话可以看看
    http://www.codeproject.com/listctrl/listctrldemo.aspsPath.Format(_T("res://%s/#2/#142"),szBuffer);
    中的#2表示RT_BITMAP类型,#142是你的bitmap的id值
      

  4.   

    AkiraChing(水银),VERIFY(m_aListCtrl.SetBkImage( &bki));怎么通不过?
      

  5.   

    检查一下sPath.Format(_T("res://%s/#2/#142"),szBuffer);
    是否正确
      

  6.   

    我的程序指定路径如下:
    sPath.Format(_T("file://D:\\Picture\\text.bmp"));
    有什么错?
      

  7.   

    当然不行了,sPath.Format(_T("res://%s/#2/#142"),szBuffer);
    你要把背景添加到工程中,给它一个id比如IDB_LISTBK,假设它的值是2000,那么就是
    sPath.Format(_T("res://%s/#2/#2000"),szBuffer);
      

  8.   

    VERIFY(m_aListCtrl.SetBkImage( &bki));
    仍然运行时出错,原因为SetBkImage( &bki);返回FALSE;
    改用如下代码
    CBitmap m_aBmp;
    m_aBmp.LoadBitmap(IDB_BMP_LL);
    VERIFY(m_aListCtrl.SetBkImage((HBITMAP)m_aBmp,TRUE,0,0));
    m_aBmp.DeleteObject();
    仍然运行时出错,原因为SetBkImage( &bki);返回FALSE;
    何故?
      

  9.   

    首先在CExListCtrlApp::InitInstance()加入
    AfxOleInit();其次代码可以简化一下
    LVBKIMAGE bki;
    bki.ulFlags = LVBKIF_STYLE_TILE | LVBKIF_SOURCE_URL;
    bki.pszImage = sPath.GetBuffer(sPath.GetLength());
    bki.cchImageMax = sPath.GetLength();
    m_aListCtrl.SetBkImage(&bki);
    VERIFY(m_aListCtrl.SetBkImage(&bki));
    你是vc6,不知上面的代码如下改动可以不
    VERIFY(m_aListCtrl.SetBkImage(sPath.GetBuffer()));
    sPath.ReleaseBuffer();如果不要字体的背景可以加上一句
    m_cListCtrl.SetTextBkColor(CLR_NONE);
      

  10.   

    谢谢AkiraChing(水银)!是我自己没看明白MSDN
    This is automatically done in MFC applications that make use of ActiveX technology, OLE Automation, OLE Linking/Embedding, or ODBC/DAO operations.
    我记得好像用向导生成的程序缺省支持ActiveX的。
    可是编译连接都不报警,MS也确实可恶!