Note   Because CListCtrl::SetBkImage makes use of OLE COM functionality, the OLE libraries must be initialized before using SetBkImage. It is best to initialize the COM libraries when the application is initialized and uninitialize the libraries when the application terminates. This is automatically done in MFC applications that make use of ActiveX technology, OLE Automation, OLE Linking/Embedding, or ODBC/DAO operations.

解决方案 »

  1.   

    BOOL CListCtrl::SetBkImage( LPTSTR pszUrl, BOOL fTile = TRUE, int xOffsetPercent = 0, int yOffsetPercent = 0 );这个肯定可以!如果需要COM、OLE初始化,可以在CWinApp::InitInstance 中调用CoInitialize。
    CWinApp::ExitInstance 调用CoUninitialize来反初始化。
      

  2.   

    //使用ListView_SetBkImage()来设置LISTVIEW的背景图案由于LISTVIEW是使用OLE COM去操作背景,所以需要在程序开始
    的时候,执行
    。。
    CoInitialize(NULL);//#include "ole2.h"
    。。而在程序退出的时候,执行

    CoUninitialize();//#include "objbase.h"
    这里是实现BK。LVBKIMAGE lbi;
    char lpURL[]="d:\\hw.bmp";//指向一个确定的URL,可以是本地文件,也可以是URL的网络资源
    lbi.ulFlags=LVBKIF_STYLE_NORMAL|LVBKIF_STYLE_TILE|LVBKIF_SOURCE_URL;
    //LVBKIF_SOURCE_HBITMAP,Version 4.71不支持此参数。 
    //lbi.hbm=LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
    lbi.pszImage=lpURL;
    lbi.cchImageMax=sizeof(lpURL);
    lbi.xOffsetPercent=15;
    lbi.yOffsetPercent=15;
    ListView_SetBkImage(hListView,&lbi);说实话,这样能设置LISTVIEW的背景,但是效果很不好,
    的确不如使用“物主绘图”技术,自己编写代码来实现,虽然复杂些。