我的程序是基于SDI的,view是继承自CListView,现在我在我的listview视图中加载了背景图片,现在的问题是我的图片太小,我如何让他拉伸到覆盖整个listview!
第二个问题:setbkimage是不是不能用HBITMAP?

解决方案 »

  1.   

    怎么画?
    void CCpkCalcView::OnDraw(CDC* pDC)
    {
    // TODO: 在此添加专用代码和/或调用基类
    BITMAP bm;
    CBitmap m_bmp;
    m_bmp.GetBitmap(&bm);
    CBitmap * m_pbmCurrent = &m_bmp;
    CDC dcMem;
    dcMem.CreateCompatibleDC(pDC);
    CBitmap* pOldBitmap = dcMem.SelectObject(m_pbmCurrent);
    CRect rc;
    GetClientRect(&rc);
    pDC->StretchBlt(0,0,rc.Width(),rc.Height(),&dcMem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
    // pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcMem,0,0,SRCCOPY);
    dcMem.SelectObject(pOldBitmap);}
    我这样写,怎么没有效果?
      

  2.   

    http://www.codeguru.com/Cpp/controls/listview/backgroundcolorandimage/article.php/c983/
      

  3.   

    加个
    m_bmp.GetBitmap(&bm);试试
      

  4.   

    void CDeviceListView::OnInitialUpdate() 
    {
    CListView::OnInitialUpdate();
       
    CListCtrl  &m_list = GetListCtrl();     

    //m_list.SetBkColor(RGB(242,251,255));
    m_list.SetTextColor( RGB(12,26,234) );    m_list.InsertColumn(0 , "Device ID",    LVCFMT_LEFT, 100,  0 );
    m_list.InsertColumn(1 , "Port ID",      LVCFMT_LEFT, 100,  1 );

    m_list.ModifyStyle( LVS_TYPEMASK,LVS_REPORT | LVS_SINGLESEL );
    m_list.SetExtendedStyle(  LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE  );
    // Set reasonable widths for our columns
    m_list.SetColumnWidth(0, LVSCW_AUTOSIZE_USEHEADER);
    m_list.SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER);
    //load schedule list
    int line=0;
    LVITEM item;
    char sBuf[100];
    char sBuf2[100];
    struDevice *pDev;
    int devcnt = (int)(m_devListView.GetUpperBound()+1);
    for(int i=0;i<devcnt;i++)
    {
    pDev = (struDevice *)m_devListView.GetAt(i);
    //if ( pDev->wDevID &&  pDev->nPortID)
    line =m_list.GetItemCount();
    item.mask = TVIF_TEXT;
    item.iItem = line;
    item.iSubItem = 0; 

    sprintf(sBuf,"%ld",pDev->wDevID);
    item.pszText = sBuf;
    m_list.InsertItem(&item);
    sprintf(sBuf2,"%ld",pDev->nPortID);
    m_list.SetItemText(line,1,sBuf2);
    } //get current work directory and add background picture.
    LVBKIMAGE bki;
    CString  strCurDir;
    char  strBkgif[MAX_PATH];
        char  sModuleName[1025];
    DWORD dwSize = GetModuleFileName(AfxGetApp()->m_hInstance,sModuleName,1024);
    sModuleName[dwSize] = '\0';
    strCurDir = sModuleName;
    int nIndex = strCurDir.ReverseFind('\\');
    strCurDir = strCurDir.Left(nIndex+1); //end with "\\"
        sprintf(strBkgif,"%sbg10.jpg",strCurDir);
    if (m_list.GetBkImage(&bki) && (bki.ulFlags == LVBKIF_SOURCE_NONE))
    {
    m_list.SetBkImage(TEXT(strBkgif),TRUE);
    }
    }