pub struct HIMAGELIST(/* private fields */);
comctl
only.Expand description
Handle to an image list.
Implementations§
Source§impl HIMAGELIST
impl HIMAGELIST
Sourcepub const unsafe fn from_ptr(p: *mut c_void) -> Self
pub const unsafe fn from_ptr(p: *mut c_void) -> Self
Constructs a new handle object by wrapping a pointer.
This method can be used as an escape hatch to interoperate with other libraries.
§Safety
Be sure the pointer has the correct type and isn’t owned by anyone else, otherwise you may cause memory access violations.
Sourcepub const unsafe fn raw_copy(&self) -> Self
pub const unsafe fn raw_copy(&self) -> Self
Returns a raw copy of the underlying handle pointer.
§Safety
As the name implies, raw_copy
returns a raw copy of the
handle, so closing one of the copies won’t close the others.
This means a handle can be used after it has been closed, what
can lead to errors and undefined behavior. Even worse: sometimes
Windows reuses handle values, so you can call a method on a
completely different handle type, what can be catastrophic.
However, in some cases the Windows API demands a copy of the
handle – raw_copy
is an escape hatch to fill this gap.
Sourcepub const unsafe fn as_mut(&mut self) -> &mut *mut c_void
pub const unsafe fn as_mut(&mut self) -> &mut *mut c_void
Returns a mutable reference to the underlying raw pointer.
This method can be used as an escape hatch to interoperate with other libraries.
§Safety
This method exposes the raw pointer used by raw Windows calls. It’s an opaque pointer to an internal Windows structure, and no dereferencings should be attempted.
Sourcepub const fn ptr(&self) -> *mut c_void
pub const fn ptr(&self) -> *mut c_void
Returns the underlying raw pointer.
This method exposes the raw pointer used by raw Windows calls. It’s an opaque pointer to an internal Windows structure, and no dereferencings should be attempted.
This method can be used as an escape hatch to interoperate with other libraries.
Source§impl HIMAGELIST
impl HIMAGELIST
Sourcepub fn iter(&self) -> impl Iterator<Item = HrResult<DestroyIconGuard>> + '_
pub fn iter(&self) -> impl Iterator<Item = HrResult<DestroyIconGuard>> + '_
Returns an iterator over all icons in the image list, by calling
HIMAGELIST::ExtractIcon
for each
one.
§Examples
Collecting the icons into a Vec
:
use winsafe::{self as w, prelude::*};
let himgl: w::HIMAGELIST; // initialized somewhere
let icons = himgl.iter()
.collect::<w::HrResult<Vec<_>>>()?;
Sourcepub fn Add(
&self,
hbmp_image: &HBITMAP,
hbmp_mask: Option<&HBITMAP>,
) -> HrResult<u32>
pub fn Add( &self, hbmp_image: &HBITMAP, hbmp_mask: Option<&HBITMAP>, ) -> HrResult<u32>
ImageList_Add
function.
A copy of the bitmap is made and stored in the image list, so you’re free to release the original bitmap.
Sourcepub fn AddIcon(&self, hicon: &HICON) -> HrResult<u32>
pub fn AddIcon(&self, hicon: &HICON) -> HrResult<u32>
ImageList_AddIcon
macro.
A copy of the icon is made and stored in the image list, so you’re free to release the original icon.
Sourcepub fn AddMasked(
&self,
hbmp_image: &HBITMAP,
color_mask: COLORREF,
) -> HrResult<u32>
pub fn AddMasked( &self, hbmp_image: &HBITMAP, color_mask: COLORREF, ) -> HrResult<u32>
ImageList_AddMasked
function.
A copy of the bitmap is made and stored in the image list, so you’re free to release the original bitmap.
Sourcepub fn BeginDrag(
&self,
itrack: u32,
hotspot: POINT,
) -> HrResult<ImageListEndDragGuard<'_>>
pub fn BeginDrag( &self, itrack: u32, hotspot: POINT, ) -> HrResult<ImageListEndDragGuard<'_>>
ImageList_BeginDrag
function.
In the original C implementation, you must call
ImageList_EndDrag
as a cleanup operation.
Here, the cleanup is performed automatically, because BeginDrag
returns an
ImageListEndDragGuard
, which
automatically calls ImageList_EndDrag
when the guard goes out of
scope. You must, however, keep the guard alive, otherwise the cleanup
will be performed right away.
§Examples
use winsafe::{self as w, prelude::*};
let himgl: w::HIMAGELIST; // initialized somewhere
let _drag = himgl.BeginDrag(0, w::POINT::new())?; // keep guard alive
Sourcepub fn Create(
image_sz: SIZE,
flags: ILC,
initial_size: i32,
grow_size: i32,
) -> HrResult<ImageListDestroyGuard>
pub fn Create( image_sz: SIZE, flags: ILC, initial_size: i32, grow_size: i32, ) -> HrResult<ImageListDestroyGuard>
ImageList_Create
function.
§Examples
use winsafe::{self as w, prelude::*, co};
let himgl = w::HIMAGELIST::Create(
w::SIZE::with(16, 16),
co::ILC::COLOR32,
1,
1,
)?;
// ImageList_Destroy() automatically called
Sourcepub fn DragShowNolock(show: bool) -> HrResult<()>
pub fn DragShowNolock(show: bool) -> HrResult<()>
ImageList_DragShowNolock
function.
Sourcepub fn Draw(
&self,
index: u32,
hdc_dest: &HDC,
dest: POINT,
style: ILD,
) -> HrResult<()>
pub fn Draw( &self, index: u32, hdc_dest: &HDC, dest: POINT, style: ILD, ) -> HrResult<()>
ImageList_Draw
function.
Sourcepub fn DrawEx(
&self,
index: u32,
hdc_dest: &HDC,
dest: POINT,
img_portion: Option<SIZE>,
background_color: ClrDefNone,
foreground_color: ClrDefNone,
style: ILD,
) -> HrResult<()>
pub fn DrawEx( &self, index: u32, hdc_dest: &HDC, dest: POINT, img_portion: Option<SIZE>, background_color: ClrDefNone, foreground_color: ClrDefNone, style: ILD, ) -> HrResult<()>
ImageList_DrawEx
function.
Sourcepub fn Duplicate(&self) -> HrResult<ImageListDestroyGuard>
pub fn Duplicate(&self) -> HrResult<ImageListDestroyGuard>
ImageList_Duplicate
function.
Sourcepub fn ExtractIcon(&self, index: u32) -> HrResult<DestroyIconGuard>
pub fn ExtractIcon(&self, index: u32) -> HrResult<DestroyIconGuard>
ImageList_ExtractIcon
macro.
A copy of the stored icon is returned.
Sourcepub fn GetBkColor(&self) -> COLORREF
pub fn GetBkColor(&self) -> COLORREF
ImageList_GetBkColor
function.
Sourcepub fn GetIcon(&self, index: u32, flags: ILD) -> HrResult<DestroyIconGuard>
pub fn GetIcon(&self, index: u32, flags: ILD) -> HrResult<DestroyIconGuard>
ImageList_GetIcon
function.
A copy of the stored icon is returned.
Sourcepub fn GetIconSize(&self) -> HrResult<SIZE>
pub fn GetIconSize(&self) -> HrResult<SIZE>
ImageList_GetIconSize
function.
Sourcepub fn GetImageCount(&self) -> u32
pub fn GetImageCount(&self) -> u32
ImageList_GetImageCount
function.
Sourcepub fn ReplaceIcon(&self, index: u32, hicon_new: &HICON) -> HrResult<u32>
pub fn ReplaceIcon(&self, index: u32, hicon_new: &HICON) -> HrResult<u32>
ImageList_ReplaceIcon
function.
A copy of the icon is made and stored in the image list, so you’re free to release the original icon.
Sourcepub fn SetBkColor(&self, bk_color: Option<COLORREF>) -> Option<COLORREF>
pub fn SetBkColor(&self, bk_color: Option<COLORREF>) -> Option<COLORREF>
ImageList_SetBkColor
function.
Sourcepub unsafe fn SetImageCount(&self, new_count: u32) -> HrResult<()>
pub unsafe fn SetImageCount(&self, new_count: u32) -> HrResult<()>
ImageList_SetImageCount
function.
§Safety
If the size is increased, you must call
HIMAGELIST::ReplaceIcon
to fill the
new indexes, otherwise draw operations will be
unpredictable.
Sourcepub fn Write(&self, stream: &impl ole_IStream) -> HrResult<()>
pub fn Write(&self, stream: &impl ole_IStream) -> HrResult<()>
ImageList_Write
function.
Source§impl HIMAGELIST
impl HIMAGELIST
Sourcepub fn DrawIndirect(&self, imldp: &IMAGELISTDRAWPARAMS) -> HrResult<()>
Available on crate feature gdi
only.
pub fn DrawIndirect(&self, imldp: &IMAGELISTDRAWPARAMS) -> HrResult<()>
gdi
only.ImageList_DrawIndirect
function.
Source§impl HIMAGELIST
impl HIMAGELIST
Sourcepub fn add_icons_from_shell(
&self,
file_extensions: &[impl AsRef<str>],
) -> HrResult<()>
Available on crate feature shell
only.
pub fn add_icons_from_shell( &self, file_extensions: &[impl AsRef<str>], ) -> HrResult<()>
shell
only.Calls SHGetFileInfo
to retrieve one or more
shell file icons, then passes them to
AddIcon
.
§Examples
use winsafe::{self as w, prelude::*, co};
let mut himgl = w::HIMAGELIST::Create(
w::SIZE::with(16, 16),
co::ILC::COLOR32,
1,
1,
)?;
himgl.add_icons_from_shell(&["mp3", "wav"])?;
Trait Implementations§
Source§impl Debug for HIMAGELIST
impl Debug for HIMAGELIST
Source§impl Display for HIMAGELIST
impl Display for HIMAGELIST
Source§impl Handle for HIMAGELIST
impl Handle for HIMAGELIST
Source§const NULL: Self
const NULL: Self
kernel
only.0
.Source§const INVALID: Self
const INVALID: Self
kernel
only.-1
. Read moreSource§unsafe fn from_ptr(p: *mut c_void) -> Self
unsafe fn from_ptr(p: *mut c_void) -> Self
kernel
only.Source§unsafe fn raw_copy(&self) -> Self
unsafe fn raw_copy(&self) -> Self
kernel
only.Source§unsafe fn as_mut(&mut self) -> &mut *mut c_void
unsafe fn as_mut(&mut self) -> &mut *mut c_void
kernel
only.