본문 바로가기

Programming/MFC

[MFC] 리스트 컨트롤 배경화면 넣기

ListView Ctrl 에서 배경화면 넣기  

        LVBKIMAGE bki;

        CString strImgPath;

        strImgPath = "\\Image\\Back.bmp";

 

        bki.ulFlags = LVBKIF_STYLE_TILE | LVBKIF_SOURCE_URL;

        bki.pszImage = strImgPath.GetBuffer(strImgPath.GetLength());

        bki.cchImageMax = strImgPath.GetLength();

 

        m_listTest.SetBkImage(&bki);

 

위와 같은 방법으로 ListCtrl 에 배경화면을 넣었는데요...

요 방법은 Image 디렉토리에 그림이 있어야 배경화면을 넣을수 있는건데...

리소스에 등록해 놓은 그림을 배경화면으로 넣는 방법은 없나요??

아시는 분 부탁드릴께요...

 Re: HBITMAP이용해서 하시면...  
BOOL SetBkImage( HBITMAP hbm, BOOL fTile = TRUE, int xOffsetPercent = 0, int yOffsetPercent = 0 );

LVBKIMAGE구조체 말고도 hbitmap을 이용해서도 사용 할수 있습니다...

 

LoadBitmap을 이용해서 리소스에 있는 이미지 로드해서... 사용하시면 되겠네요.

 Re: 이렇게 하면 리소스에 포함된 배경 이미지를 쓸 수 있습니다.  

이렇게 하면 리소스에 포함된 배경 이미지를 쓸 수 있습니다.

 

void CMyList::MySetBkImage()

{

    CoInitialize(NULL);

 

    TCHAR szBuf[_MAX_PATH];

    VERIFY(::GetModuleFileName(::AfxGetInstanceHandle(), szBuf, _MAX_PATH));

    CString strPath;

    strPath.Format(_T("res://%s/%d/%d"), szBuf, RT_BITMAP, IDB_BGIMAGE);    

 

    LVBKIMAGE lvbk;

    lvbk.pszImage = (LPTSTR) (LPCTSTR) strPath;

    lvbk.ulFlags  = LVBKIF_SOURCE_URL | LVBKIF_STYLE_NORMAL;

    lvbk.xOffsetPercent = 0;

    lvbk.yOffsetPercent = 0;

 

    if (!this->GetListCtrl().SetBkImage(&lvbk))

        AfxMessageBox("Fail");

}