Struct HIMAGELIST

Source
pub struct HIMAGELIST(/* private fields */);
Available on crate feature comctl only.
Expand description

Handle to an image list.

Implementations§

Source§

impl HIMAGELIST

Source

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.

Source

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.

Source

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.

Source

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

Source

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<_>>>()?;
Source

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.

Source

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.

Source

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.

Source

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
Source

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
Source

pub fn DragMove(&self, x: i32, y: i32) -> HrResult<()>

Source

pub fn DragShowNolock(show: bool) -> HrResult<()>

Source

pub fn Draw( &self, index: u32, hdc_dest: &HDC, dest: POINT, style: ILD, ) -> HrResult<()>

ImageList_Draw function.

Source

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.

Source

pub fn Duplicate(&self) -> HrResult<ImageListDestroyGuard>

Source

pub fn ExtractIcon(&self, index: u32) -> HrResult<DestroyIconGuard>

ImageList_ExtractIcon macro.

A copy of the stored icon is returned.

Source

pub fn GetBkColor(&self) -> COLORREF

Source

pub fn GetIcon(&self, index: u32, flags: ILD) -> HrResult<DestroyIconGuard>

ImageList_GetIcon function.

A copy of the stored icon is returned.

Source

pub fn GetIconSize(&self) -> HrResult<SIZE>

Source

pub fn GetImageCount(&self) -> u32

Source

pub fn Remove(&self, index: Option<u32>) -> HrResult<()>

ImageList_Remove function.

Source

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.

Source

pub fn SetBkColor(&self, bk_color: Option<COLORREF>) -> Option<COLORREF>

Source

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.

Source

pub fn Write(&self, stream: &impl ole_IStream) -> HrResult<()>

ImageList_Write function.

Source§

impl HIMAGELIST

Source

pub fn DrawIndirect(&self, imldp: &IMAGELISTDRAWPARAMS) -> HrResult<()>

Available on crate feature gdi only.
Source§

impl HIMAGELIST

Source

pub fn add_icons_from_shell( &self, file_extensions: &[impl AsRef<str>], ) -> HrResult<()>

Available on crate feature 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

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for HIMAGELIST

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Handle for HIMAGELIST

Source§

const NULL: Self

Available on crate feature kernel only.
The null, uninitialized handle; equals to 0.
Source§

const INVALID: Self

Available on crate feature kernel only.
The invalid handle; equals to -1. Read more
Source§

unsafe fn from_ptr(p: *mut c_void) -> Self

Available on crate feature kernel only.
Constructs a new handle object by wrapping a pointer. Read more
Source§

unsafe fn raw_copy(&self) -> Self

Available on crate feature kernel only.
Returns a raw copy of the underlying handle pointer. Read more
Source§

unsafe fn as_mut(&mut self) -> &mut *mut c_void

Available on crate feature kernel only.
Returns a mutable reference to the underlying raw pointer. Read more
Source§

fn ptr(&self) -> *mut c_void

Available on crate feature kernel only.
Returns the underlying raw pointer. Read more
Source§

fn as_opt(&self) -> Option<&Self>

Available on crate feature kernel only.
Returns None if the handle is null or invalid, otherwise returns Some(&self). Read more
Source§

impl Hash for HIMAGELIST

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl LowerHex for HIMAGELIST

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for HIMAGELIST

Source§

fn eq(&self, other: &HIMAGELIST) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

const fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl UpperHex for HIMAGELIST

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for HIMAGELIST

Source§

impl Send for HIMAGELIST

Source§

impl StructuralPartialEq for HIMAGELIST

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.