Ejemplo n.º 1
0
        /// <summary>
        /// Create an IconResource object to represent the icon resource in the
        /// given library.
        /// </summary>
        unsafe public IconResource(Library library,
                                   IntPtr pResourceName)
        {
            m_pName = pResourceName;

            // Get the RT_GROUP_ICON resource data.

            IntPtr hGroupInfo = library.FindResource(m_pName,
                                                     WindowsAPI.RT_GROUP_ICON);

            IntPtr hGroupRes      = library.LoadResource(hGroupInfo);
            uint   dwGroupResSize = library.SizeofResource(hGroupInfo);

            WindowsAPI.MEMICONDIR *pDirectory = (WindowsAPI.MEMICONDIR *)Library.LockResource(hGroupRes);

            // Get the RT_ICON resource data for each icon in the RT_GROUP_ICON.

            m_images = new IconImage[pDirectory->wCount];

            for (ushort i = 0; i < pDirectory->wCount; ++i)
            {
                WindowsAPI.MEMICONDIRENTRY *pEntry = GetDirectoryEntry(pDirectory, i);

                m_images[i] = new IconImage(library,
                                            new IntPtr(pEntry->wId));
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Helper function get the icon directory entry at the given index.
 /// </summary>
 unsafe private static WindowsAPI.MEMICONDIRENTRY *GetDirectoryEntry(WindowsAPI.MEMICONDIR * pDirectory,
                                                                     ushort index)
 {
     WindowsAPI.MEMICONDIRENTRY *pEntry = &pDirectory->arEntries;
     return(pEntry += index);
 }