调色板操作
调色板操作类:CPalette
创建调色板函数 BOOL CreatePalette(LPLOGPALETTE lpLogPalette)
LOGPALETTE 结构
typedef struct tagLOGPALETTE {
WORD palVersion; // 版本号,应指定为0x300
WORD palNumEntries; // 调色板中的表项数
PALETTEENTRY palPalEntry[1]; // 调色板表项数组
} LOGPALETTE;
PALETTEENTRY 结构
typedef struct tagPALETTEENTRY {
BYTE peRed;
BYTE peGreen;
BYTE peBlue;
BYTE peFlags;
} PALETTEENTRY;
HPALETTE和CPalette 对象互换
HPALETTE和CPalette 对象相互转换用CPalette::FromHandle 和 CPalette::GetSafeHandle
实现调色板操作
第一步:CDC::SelectPalette选入调色板
第二步:CDC::ReleasePalette 实现调色板
三个调色板消息
1.WM_QUERYNEWPALETTE 通知窗口它将收到输入焦点,给它一次机会实现其自身的逻辑调色板。
2.WM_PALETTECHANGED 通知窗口系统调色板已被其他窗口改变。
3.WM_PALETTECHANGING通知窗口系统调色板将被其他窗口改变。
DDB(Device Dependent Bitmap) 设备相关位图
DIB(Device Independent Bitmap) 设备无关位图
GetPaletteEntries 获取指定调色板中的实体数,返回调色板中的颜色数
UINT GetPaletteEntries(
(in)HPALETTE hpal, // 指向调色板的句柄
(in)UINT iStartIndex, // 从第几个开始接收
(in)UINT nEntries, // 接收多少个
(out)LPPALETTEENTRY lppe // 接收颜色的数组
);