17,740
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Runtime.InteropServices;
using Microsoft.WindowsCE.Forms;
namespace ListViewBackground
{
static class Helper
{
// ListView messages
private const int LVM_FIRST = 0x1000;
private const int LVM_SETBKIMAGE = (LVM_FIRST + 138);
[Flags]
enum LVBKIF : int
{
SOURCE_NONE = 0x00000000,
SOURCE_HBITMAP = 0x00000001,
SOURCE_URL = 0x00000002,
SOURCE_MASK = 0x00000003,
STYLE_NORMAL = 0x00000000,
STYLE_TILE = 0x00000010,
STYLE_MASK = 0x00000010,
FLAG_TILEOFFSET = 0x00000100
}
class LVBKIMAGE
{
public LVBKIF ulFlags = LVBKIF.SOURCE_NONE;
public IntPtr hbm = IntPtr.Zero;
public IntPtr pszImage = IntPtr.Zero;
public uint cchImageMax = 0;
public int xOffsetPercent = 100;
public int yOffsetPercent = 100;
};
public static void SetBackgroundImage (ListView control, Bitmap bitmap)
{
LVBKIMAGE lvBkImage = new LVBKIMAGE ();
lvBkImage.ulFlags = LVBKIF.SOURCE_HBITMAP | LVBKIF.STYLE_TILE;
lvBkImage.hbm = bitmap.GetHbitmap ();
lvBkImage.cchImageMax = 0;
lvBkImage.xOffsetPercent = 0;
lvBkImage.yOffsetPercent = 0;
Message msg = Message.Create (control.Handle, (int)LVM_SETBKIMAGE, (IntPtr)0, Marshal.AllocCoTaskMem (Marshal.SizeOf (lvBkImage)));
Marshal.StructureToPtr (lvBkImage, msg.LParam, false);
MessageWindow.SendMessage (ref msg);
Marshal.FreeCoTaskMem (msg.LParam);
}
}
}