HOHO:玩弄过CListCtrl的请来看一看,如何更改背景的伸展性?(分少,只给一个人,不好意思)

QQ21898580 2003-10-17 01:19:50
如题
使用SetBkImage()函数设置背景之后,它的大小默认的是原本的图片大小.
如何设置图片填充整个屏幕?
...全文
36 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnwww 2003-10-31
  • 打赏
  • 举报
回复
谢谢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也确实可恶!
AkiraChing 2003-10-30
  • 打赏
  • 举报
回复
首先在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);
cnwww 2003-10-29
  • 打赏
  • 举报
回复
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;
何故?
AkiraChing 2003-10-19
  • 打赏
  • 举报
回复
当然不行了,sPath.Format(_T("res://%s/#2/#142"),szBuffer);
你要把背景添加到工程中,给它一个id比如IDB_LISTBK,假设它的值是2000,那么就是
sPath.Format(_T("res://%s/#2/#2000"),szBuffer);
cnwww 2003-10-18
  • 打赏
  • 举报
回复
我的程序指定路径如下:
sPath.Format(_T("file://D:\\Picture\\text.bmp"));
有什么错?
henryzc 2003-10-17
  • 打赏
  • 举报
回复
up
AkiraChing 2003-10-17
  • 打赏
  • 举报
回复
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属性就可以了
AkiraChing 2003-10-17
  • 打赏
  • 举报
回复
检查一下sPath.Format(_T("res://%s/#2/#142"),szBuffer);
是否正确
cnwww 2003-10-17
  • 打赏
  • 举报
回复
AkiraChing(水银),VERIFY(m_aListCtrl.SetBkImage( &bki));怎么通不过?
AkiraChing 2003-10-17
  • 打赏
  • 举报
回复
不是的,不需要将图片转换成一定大小

看不明白的话可以看看
http://www.codeproject.com/listctrl/listctrldemo.asp

sPath.Format(_T("res://%s/#2/#142"),szBuffer);
中的#2表示RT_BITMAP类型,#142是你的bitmap的id值
henryzc 2003-10-17
  • 打赏
  • 举报
回复
设置好listctrl的背景后,怎么不能刷新显示了呢?
QQ21898580 2003-10-17
  • 打赏
  • 举报
回复
上面的,难道是进行格式转换,将图片转换成一定大小后才贴图?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧