Jump to content


IconChooser UDF

  • Please log in to reply
7 replies to this topic

#1 Yashied


    Happy in Moscow

  • MVPs
  • 2,647 posts

Posted 09 May 2011 - 11:40 AM


This library contains only one function which displays a dialog box that allows the user to choose an icon from the selection available embedded in a resource such as an executable or DLL file. Of course, there is a PickIconDlg() API function but the dialog box created by this library has the following advantages:
  • Ability to resize the displayed icons.
  • Ability to resize the dialog box.
  • Ability to save the window's settings (size, position, etc.) in the registry.
  • Fully customizable appearance a dialog box.
  • More pleasing appearance.

IMPORTANT This library registers the following Windows Message (WM):


If you use in your code one of these messages, you should call handlers from this library until returns from your handlers, otherwise, the dialog box will not work properly, for example:

Func MY_WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)     Local $Result = IC_WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)     If $Result <> $GUI_RUNDEFMSG Then         Return $Result     EndIf     ... EndFunc

As usualy, I will be glad to any feedback and suggestions.



IconChooser UDF Library v1.1
Previous downloads: 71

Attached File  IconChooser.au3   38.44KB   1100 downloads


#Include <IconChooser.au3> Global $Ico[2] = [@SystemDir & '\shell32.dll', 23] $hForm = GUICreate('MyGUI', 160, 160) $Button = GUICtrlCreateButton('Change Icon...', 25, 130, 110, 23) $Icon = GUICtrlCreateIcon($Ico[0], -(1 + $Ico[1]), 64, 50, 32, 32) GUISetState() While 1     Switch GUIGetMsg()         Case -3             ExitLoop         Case $Button             $Data = _IconChooserDialog($Ico[0], $Ico[1], 32, -1, $hForm)             If IsArray($Data) Then                 GUICtrlSetImage($Icon, $Data[0], -(1 + $Data[1]))                 $Ico = $Data             EndIf     EndSwitch WEnd

Edited by Yashied, 10 December 2013 - 02:50 PM.

#2 AdmiralClaws


    Where is the fish?

  • Active Members
  • PipPipPipPipPipPip
  • 4,704 posts

Posted 09 May 2011 - 12:00 PM

Interesting, but FYI there seems to be lots of problems on x64.

The relosution dropdown, and the gui's icon isn't replaced. Probably more, but I don't have time to go over it all now, was just on my way out.

Question: If your main OS isn't x64, then why don't you install a vm so you can test stuff yourself instead of rely on my sleep-deprived reports? :unsure:
(I like VMware Workstation)

#3 BrewManNH


    באָבקעס מיט קודוצ׳ה

  • MVPs
  • 10,991 posts

Posted 09 May 2011 - 03:03 PM

Very nice, it will help me in choosing an icon for programs I create. Previously I'd just loop through them until I saw one I liked. Now I can pick one out a LOT easier. :unsure:

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to an XP machine, and I'm not going to.


Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude


How to ask questions the smart way!


Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.
Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.
_FileGetProperty - Retrieve the properties of a file SciTE Toolbar - A toolbar demo for use with the SciTE editorGUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.
GUIToolTip UDF Demo - Demo script to show how to use the GUIToolTip UDF to create and use customized tooltips. Latin Square password generator


I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

#4 Yashied


    Happy in Moscow

  • MVPs
  • 2,647 posts

Posted 09 May 2011 - 03:18 PM

Interesting, but FYI there seems to be lots of problems on x64.

It's the same problem as here.

$tagNMITEMACTIVATE = $tagNMHDR & ';uint Aligment;int Index;int SubItem;uint NewState;uint OldState;uint Changed;int X;int Y;lparam lParam;uint KeyFlags'


#5 JScript


    I'm back ... I miss, why not!

  • Active Members
  • PipPipPipPipPipPip
  • 1,232 posts

Posted 09 May 2011 - 05:15 PM

Wonderful!!!Much better than the native function in Windows...
http://forum.autoitbrasil.com/ (AutoIt v3 Brazil!!!)

dropbo10.pngDownload Dropbox - Simplify your life!
Your virtual HD wherever you go, anywhere!       

#6 Yashied


    Happy in Moscow

  • MVPs
  • 2,647 posts

Posted 13 May 2011 - 05:57 PM

The library has been updated to version 1.1.


  • Added icon cache (speeds up the display a few times), use $IC_FLAG_USECACHE flag. All cached icons are located in a temporary directory in the following format:

  • Improved logic save the window's parameters to the registry.
  • Improved alignment of the dialog window to the parent window in Windows Vista+.
  • Added a hotkey F5 to refresh the icons.
  • Fixed minor bugs in the code.

#7 xeroTechnologiesLLC



  • Active Members
  • PipPipPip
  • 158 posts

Posted 07 April 2012 - 05:50 PM

I know this is a bit old post, but wanted to drop in my thanks for creating this.

We are working on a project that this will fit in very nicely and wanted to express my appreciation for the skill shown here.

Very amazing work, Yashied!

#8 Yashied


    Happy in Moscow

  • MVPs
  • 2,647 posts

Posted 10 December 2013 - 02:57 PM

Links updated.


If you can't download my programs in other posts please change address:




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users