Using Win32 functions in Visual FoxPro Image Gallery
Code examples:
Enumerating Processes -- Win9*
Testing Clipboard functions: emptying the clipboard
Disconnecting USB Mass Storage Device programmatically
Creating a console window for Visual FoxPro application
How to print a bitmap file
Retrieving the IP-to-physical address mapping table
Playing WAV sounds simultaneously
Detecting changes in connections to removable drives (VFP9)
Monitoring clipboard content changes (VFP9)
WAV file player
How to display a user-defined icon in the MessageBox dialog
How to print picture stored in enhanced-format metafile (*.emf)
Browsing Windows Known Folders (Special Folders)
Moving shortcut to a specified position on the Windows Desktop
Adding a background image to VFP report (VFP9, ReportListener)
How to print FoxPro form
How to enable the SE_SHUTDOWN_NAME privilege for the application
How to view icons stored in executable files (Icon Viewer) - II
Storing content of the Clipboard to a bitmap file
A class that encrypts and decrypts files using Cryptography API Functions
Encapsulating access to the Windows Services in a class
How to view system icons for the classes installed on the local machine
Displaying system dialog that selects a folder
Bitmap Class for Visual FoxPro application
Windows Shell Icons displayed and exported to ICO files (Vista)

User rating: 0/10 (0 votes)
Rate this code sample:
  • ~
More code examples    Listed functions    Add comment     W32 Constants      Translate this page Printer friendly version of this code sample
Before you begin:
This code sample employs SHGetStockIconInfo Shell API function for retrieving information about system-defined Shell icons.

Here is a VFP form hosting ListView control with Windows Shell icons.

ICO files are neither created or required to run this code sample. For icons, the ListView connects directly to the system image list using icon index obtained through SHGetStockIconInfo call.

A Shell icon (actually any ICO resource from EXE or DLL file) can be stored to ICO file perfectly usable in VFP. Like this one, for example:

The Comment part down this page has more on it.

See also:
  • How to view icons stored in executable files
  • Displaying the associated icons and descriptions for files and folders
  • Converting image file to .ICO file
  • Storing DLL icon resources in image files
  • Storing DLL icon resources in .ICO files
  • Displaying icons in the system tray
  •  
      Members area. Log in to view this example.
     
      User name:
      Password:
     
     
      Forgot your password?
     
      Sign up for
    the Membership
     
     


    User rating: 0/10 (0 votes)
    Rate this code sample:
    • ~
    9786 bytes  
    Created: 2011-01-17 15:43:32  
    Modified: 2011-01-27 08:12:08  
    Visits in 7 days: 178  
    Listed functions:
    DestroyIcon
    GetWindowLong
    GlobalAlloc
    GlobalFree
    GlobalSize
    SendMessage
    SetWindowLong
    SHGetFileInfo
    SHGetStockIconInfo
    Printer friendly API declarations
    My comment:
    When switched to Report mode (View=3), the ListView control displays the resource file and ICO resource index for each icon displayed (szPath and iIcon members of SHSTOCKICONINFO structure).

    That reveals that Windows 7 stores Shell icons in at least 4 files residing in System32 directory:
  • Shell32.dll
  • Imageres.dll
  • Imagesp1.dll
  • Mydocs.dll

    With known resource file and resource index, saving a Shell icon to ICO file is an easy task.

    Here is another code sample on this web site that explains how. It defines VFP classes IconGroupResource and IconResource. The former creates ICO files holding multiple versions of the same icon (size & color depth vary). The latter creates ICO files holding a single icon version, for example 48x48, 8 bit.


    Selected Windows iconsDownload a small selection of Windows icons from System32\Imageres.dll library.


    The code below stores Imageres.dll Icon resources to ICO files.
    oIconGroups = CREATEOBJECT("IconGroups",;
            GETENV("SystemRoot") + "\system32\imageres.dll")

    oIconGroups.EnumIconGroupResources
    ? "Icon groups:", oIconGroups.Count

    LOCAL cTargetPath, nGroupIndex, nIconIndex
    cTargetPath = GETDIR("", "Select ICO files destination folder.")

    IF NOT EMPTY(m.cTargetPath)
            SET SAFETY OFF
            nGroupIndex = 0

            FOR EACH oIconGroup IN oIconGroups
                    oIconGroup.SaveToFile(cTargetPath +;
                            "groupicon_" + TRANSFORM(nGroupIndex) + ".ico")

                    nIconIndex = 0
                    FOR EACH oIcon IN oIconGroup.icons
                            oIcon.SaveToFile(cTargetPath +;
                                    "icon_" +;
                                    TRANSFORM(nGroupIndex) + "_" +;
                                    TRANSFORM(nIconIndex) + "_" +;
                                    TRANSFORM(oIcon.resid) + ".ico")

                            nIconIndex = nIconIndex + 1
                    NEXT
                    nGroupIndex = nGroupIndex + 1
            NEXT
            SET SAFETY ON
    ENDIF

    Storing DLL icon resources in .ICO files

    * * *
    Another Icon Viewer code sample on this web site reads icons directly from .EXE or .DLL file calling ExtractIcon and GetIconInfo functions. If pointed at Shell32.dll, that viewer displays even larger number of icons then the one presented.

    But the former has a deficiency. The Shell icons are retrieved based on their respective resource index in Shell32.dll. This index may fluctuate through OS versions. In contrast, the SHGetStockIconInfo uses OS-approved SHSTOCKICONID enumeration.
  • Word Index links for this example:
    Translate this page:
      Spanish    Portuguese    German    French    Italian  
    FreeTranslation.com offers instant, free translations of text or web pages.
    User Contributed Notes:
    There are no notes on this subject.


    Copyright 2001-2018 News2News, Inc. Before reproducing or distributing any data from this site please ask for an approval from its owner. Unless otherwise specified, this page is for your personal and non-commercial use. The information on this page is presented AS IS, meaning that you may use it at your own risk. Microsoft Visual FoxPro and Windows are trade marks of Microsoft Corp. All other trademarks are the property of their respective owners. 

    Privacy policy
    Credits: PHP (4.4.9), an HTML-embedded scripting language, MySQL (5.6.38), the Open Source standard SQL database, AceHTML Freeware Version 4, freeware HTML Editor of choice.   Hosted by Korax Online Inc.
    Last Topics Visited (54.242.250.208)
    7 sec.Function: 'GetUserNameEx'
    Function group: 'System Information'
    13 sec.Function: 'GdipDeleteBrush'
    Function group: 'GDI+ Brush'
    19 sec.All Functions
    25 sec.
    Function group: 'Multiple Display Monitors'
    30 sec.Function: 'GetTempPath'
    Function group: 'File Management'
    36 sec.Project
    42 sec.
    49 sec.Function: 'SQLAllocHandle'
    Function group: 'ODBC API'
    56 sec.Solutions
    1.03 min.Function: 'SetTextColor'
    Function group: 'Font and Text'
    Google
    Advertise here!