在线等Listview背景图问题(comctl5如何从picturebox中读入背景)
最近分数紧张,请各位高手先多多包涵……
最近用common control 5里面的listview(comctl32.ocx),在加背景图的时候发现一个麻烦的问题:
我现在用的是这个方法:
http://flyersim.com.ne.kr/code/comctl/lvbackground.htm
或者直接下载测试源代码:
http://www.ayang365.com/files/listviewbg.rar
用这个方法添加:
Call SendMessage(ListView1.hWnd, _
LVM_SETBKIMAGE, _
0&, BKIMG)
但是有个问题,这个只能添加URL或者硬盘绝对路径的图片文件吗?可不可以利用hbmp来把picturebox里面的图像加载到listview背景中去呢?因为我看到BKIMG的结构声明里这样写的:
Private Type LVBKIMAGE
uFlags As Long
hBmp As Long
pszImage As String
cchImageMax As Long
xOffsetPercent As Long
yOffsetPercent As Long
End Type
注意:一定要用common ctl 5.0,不考虑换成6.0的问题。
等过段时间有更多分了,一定给各位补上,先谢谢了!
[解决办法]
LVBKIF_SOURCE_HBITMAP
A background bitmap is supplied via the hbm member of LVBKIMAGE. If the message LVM_SETBKIMAGE succeeds, then the list-view takes ownership of the bitmap.
hbm
The handle of the background bitmap. This member is valid only if the LVBKIF_SOURCE_HBITMAP flag is set in ulFlags.
http://vbnet.mvps.org/index.html?code/comctl/lvbackground.htm
[解决办法]
你只有一个三角,貌似最多100吧...
[解决办法]
请别绕路,不需内存位图。
picturebox.picture.handle就是你要的hbmp
若是自绘的图就用
picturebox.image.handle
uFlags成员加上LVBKIF_SOURCE_HBITMAP标志,就可用hbmp了
[解决办法]
看起来问题似乎应该可以解决了,但是,遗憾的是,似乎LVBKIF_SOURCE_HBITMAP不被common control 5里面的listview所支持 要是确实想解决这个问题的话,不妨尝试自绘listview
[解决办法]
http://www.kidmoses.com/components/watermark.html
Delphi的,很详细。我曾经就是看这个实现的。