DroidExplorer.Core.UI.SystemImageList.create C# (CSharp) Method

create() private method

Creates the SystemImageList
private create ( ) : void
return void
		private void create ( ) {
			// forget last image list if any:
			hIml = IntPtr.Zero;

			if ( isXpOrAbove ( ) ) {
				// Get the System IImageList object from the Shell:
				Guid iidImageList = new Guid ( "46EB5926-582E-4017-9FDF-E8998DAA0950" );
				int ret = SHGetImageList (
					(int)size,
					ref iidImageList,
					ref iImageList
					);
				// the image list handle is the IUnknown pointer, but 
				// using Marshal.GetIUnknownForObject doesn't return
				// the right value.  It really doesn't hurt to make
				// a second call to get the handle:
				SHGetImageListHandle ( (int)size, ref iidImageList, ref hIml );
			} else {
				// Prepare flags:
				SHGetFileInfoConstants dwFlags = SHGetFileInfoConstants.SHGFI_USEFILEATTRIBUTES | SHGetFileInfoConstants.SHGFI_SYSICONINDEX;
				if ( size == SystemImageListSize.SmallIcons ) {
					dwFlags |= SHGetFileInfoConstants.SHGFI_SMALLICON;
				}
				// Get image list
				SHFILEINFO shfi = new SHFILEINFO ( );
				uint shfiSize = (uint)Marshal.SizeOf ( shfi.GetType ( ) );

				// Call SHGetFileInfo to get the image list handle
				// using an arbitrary file:
				hIml = SHGetFileInfo (
					".txt",
					FILE_ATTRIBUTE_NORMAL,
					ref shfi,
					shfiSize,
					(uint)dwFlags );
				Debug.Assert ( ( hIml != IntPtr.Zero ), "Failed to create Image List" );
			}
		}
		#endregion