// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0 > or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT >, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
use ctypes::{c_int, c_void};
use shared::guiddef::{REFCLSID, REFIID};
use shared::minwindef::{BOOL, DWORD, LRESULT, UINT};
use shared::windef::{COLORREF, HBITMAP, HICON, HWND, POINT, RECT};
use um::commctrl::{IMAGEINFO, IMAGELISTDRAWPARAMS};
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::winnt::HRESULT;
extern "system" {
pub fn ImageList_CoCreateInstance(
rclsid: REFCLSID,
punkOuter: *
const IUnknown,
riid: REFIID,
ppv: *
mut *
mut c_void,
) -> HRESULT;
}
pub const ILIF_ALPHA: DWORD =
0 x00000001;
pub const ILIF_LOWQUALITY: DWORD =
0 x00000001;
pub const ILDRF_IMAGELOWQUALITY: LRESULT =
0 x00000001;
pub const ILDRF_OVERLAYLOWQUALITY: LRESULT =
0 x00000010;
RIDL!{
#[ uuid(
0 x46eb5926,
0 x582e,
0 x4017,
0 x9f,
0 xdf,
0 xe8,
0 x99,
0 x8d,
0 xaa,
0 x09,
0 x50)]
interface IImageList(IImageListVtbl): IUnknown(IUnknownVtbl) {
fn Add(
hbmImage: HBITMAP,
hbmMask: HBITMAP,
pi: *
mut c_int,
) -> HRESULT,
fn ReplaceIcon(
hicon: HICON,
pi: *
mut c_int,
) -> HRESULT,
fn SetOverlayImage(
iImage: c_int,
iOverlay: c_int,
) -> HRESULT,
fn Replace(
hbmImage: HBITMAP,
hbmMask: HBITMAP,
) -> HRESULT,
fn AddMasked(
hbmImage: HBITMAP,
crMask: COLORREF,
pi: *
mut c_int,
) -> HRESULT,
fn Draw(
pimldp: *
mut IMAGELISTDRAWPARAMS,
) -> HRESULT,
fn Remove(
i: c_int,
) -> HRESULT,
fn GetIcon(
i: c_int,
flags: UINT,
picon: *
mut HICON,
) -> HRESULT,
fn GetImageInfo(
i: c_int,
pImageInfo: *
mut IMAGEINFO,
) -> HRESULT,
fn Copy(
iDst: c_int,
punkSrc: *
mut IUnknown,
iSrc: c_int,
uFlags: UINT,
) -> HRESULT,
fn Merge(
i1: c_int,
punk2: *
mut IUnknown,
i2: c_int,
dx: c_int,
dy: c_int,
riid: REFIID,
ppv: *
mut *
mut c_void,
) -> HRESULT,
fn Clone(
riid: REFIID,
ppv: *
mut *
mut c_void,
) -> HRESULT,
fn GetImageRect(
i: c_int,
prc: *
mut RECT,
) -> HRESULT,
fn GetIconSize(
cx: *
mut c_int,
cy: *
mut c_int,
) -> HRESULT,
fn SetIconSize(
cx: c_int,
cy: c_int,
) -> HRESULT,
fn GetImageCount(
pi: *
mut c_int,
) -> HRESULT,
fn SetImageCount(
uNewCount: UINT,
) -> HRESULT,
fn SetBkColor(
clrBk: COLORREF,
pclr: *
mut COLORREF,
) -> HRESULT,
fn GetBkColor(
pclr: *
mut COLORREF,
) -> HRESULT,
fn BeginDrag(
iTrack: c_int,
dxHotspot: c_int,
dyHotspot: c_int,
) -> HRESULT,
fn EndDrag() -> HRESULT,
fn DragEnter(
hwndLock: HWND,
x: c_int,
y: c_int,
) -> HRESULT,
fn DragLeave(
hwndLock: HWND,
) -> HRESULT,
fn DragMove(
x: c_int,
y: c_int,
) -> HRESULT,
fn SetDragCursorImage(
punk: *
mut IUnknown,
iDrag: c_int,
dxHotspot: c_int,
dyHotspot: c_int,
) -> HRESULT,
fn DragShowNolock(
fShow: BOOL,
) -> HRESULT,
fn GetDragImage(
ppt: *
mut POINT,
pptHotspot: *
mut POINT,
riid: REFIID,
ppv: *
mut *
mut c_void,
) -> HRESULT,
fn GetItemFlags(
dwFlags: *
mut DWORD,
) -> HRESULT,
fn GetOverlayImage(
iOverlay: c_int,
piIndex: *
mut c_int,
) -> HRESULT,
}}
pub const ILR_DEFAULT: DWORD =
0 x0000;
pub const ILR_HORIZONTAL_LEFT: DWORD =
0 x0000;
pub const ILR_HORIZONTAL_CENTER: DWORD =
0 x0001;
pub const ILR_HORIZONTAL_RIGHT: DWORD =
0 x0002;
pub const ILR_VERTICAL_TOP: DWORD =
0 x0000;
pub const ILR_VERTICAL_CENTER: DWORD =
0 x0010;
pub const ILR_VERTICAL_BOTTOM: DWORD =
0 x0020;
pub const ILR_SCALE_CLIP: DWORD =
0 x0000;
pub const ILR_SCALE_ASPECTRATIO: DWORD =
0 x0100;
pub const ILGOS_ALWAYS: DWORD =
0 x00000000;
pub const ILGOS_FROMSTANDBY: DWORD =
0 x00000001;
pub const ILFIP_ALWAYS: DWORD =
0 x00000000;
pub const ILFIP_FROMSTANDBY: DWORD =
0 x00000001;
pub const ILDI_PURGE: DWORD =
0 x00000001;
pub const ILDI_STANDBY: DWORD =
0 x00000002;
pub const ILDI_RESETACCESS: DWORD =
0 x00000004;
pub const ILDI_QUERYACCESS: DWORD =
0 x00000008;
STRUCT !{
struct IMAGELISTSTATS {
cbSize: DWORD,
cAlloc: c_int,
cUsed: c_int,
cStandby: c_int,
}}
RIDL!{
#[ uuid(
0 x192b9d83,
0 x58fc,
0 x457b,
0 x90,
0 xa0,
0 x2b,
0 x82,
0 xa8,
0 xb5,
0 xda,
0 xe1)]
interface IImageList2(IImageList2Vtbl): IImageList(IImageListVtbl) {
fn Resize(
cxNewIconSize: c_int,
cyNewIconSize: c_int,
) -> HRESULT,
fn GetOriginalSize(
iImage: c_int,
dwFlags: DWORD,
pcx: *
mut c_int,
pcy: *
mut c_int,
) -> HRESULT,
fn SetOriginalSize(
iImage: c_int,
cx: c_int,
cy: c_int,
) -> HRESULT,
fn SetCallback(
punk: *
mut IUnknown,
) -> HRESULT,
fn GetCallback(
riid: REFIID,
ppv: *
mut *
mut c_void,
) -> HRESULT,
fn ForceImagePresent(
iImage: c_int,
dwFlags: DWORD,
) -> HRESULT,
fn DiscardImages(
iFirstImage: c_int,
iLastImage: c_int,
dwFlags: DWORD,
) -> HRESULT,
fn PreloadImages(
pimldp: *
mut IMAGELISTDRAWPARAMS,
) -> HRESULT,
fn GetStatistics(
pils: *
mut IMAGELISTSTATS,
) -> HRESULT,
fn Initialize(
cx: c_int,
cy: c_int,
flags: UINT,
cInitial: c_int,
cGrow: c_int,
) -> HRESULT,
fn Replace2(
i: c_int,
hbmImage: HBITMAP,
hbmMask: HBITMAP,
punk: *
mut IUnknown,
dwFlags: DWORD,
) -> HRESULT,
fn ReplaceFromImageList(
i: c_int,
pil: *
mut IImageList,
iSrc: c_int,
punk: *
mut IUnknown,
dwFlags: DWORD,
) -> HRESULT,
}}
Messung V0.5 in Prozent C=98 H=100 G=98
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-25)
¤
*© Formatika GbR, Deutschland