#![allow(non_camel_case_types)]
use crate::co;
use crate::decl::*;
impl HIMAGELIST {
pub fn add_icons_from_shell(&self, file_extensions: &[impl AsRef<str>]) -> HrResult<()> {
let sz = self.GetIconSize()?;
if sz != SIZE::with(16, 16) && sz != SIZE::with(32, 32) {
return Err(co::HRESULT::E_NOTIMPL); }
for file_extension in file_extensions.iter() {
let (_, shfi) = SHGetFileInfo(
&format!("*.{}", file_extension.as_ref()),
co::FILE_ATTRIBUTE::NORMAL,
co::SHGFI::USEFILEATTRIBUTES
| co::SHGFI::ICON
| if sz == SIZE::with(16, 16) {
co::SHGFI::SMALLICON
} else {
co::SHGFI::LARGEICON
},
)?;
self.AddIcon(&shfi.hIcon)?;
}
Ok(())
}
}