Вопрос про извлечение нескольких иконок в ресурсах FASM?

Тема в разделе "WASM.BEGINNERS", создана пользователем Protorus, 31 авг 2011.

  1. Protorus

    Protorus New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2009
    Сообщения:
    51
    Тупо не могу достать иконки из ресурсов..

    Так описываю иконки в ресурсах:

    Код (Text):
    1.           directory RT_ICON,dir_icons,\
    2.                     RT_GROUP_ICON,dir_groupicons,\
    3.  
    4.           resource dir_icons,10,LANG_NEUTRAL,res_icon1,\
    5.                              11,LANG_NEUTRAL,res_icon2,\
    6.                              12,LANG_NEUTRAL,res_icon3,\
    7.                              13,LANG_NEUTRAL,res_icon4
    8.  
    9.           resource dir_groupicons,1,LANG_NEUTRAL,res_groupicon1
    10.  
    11.           icon res_groupicon1,res_icon1,'icon_a.ico',\
    12.                               res_icon2,'icon_b.ico',\
    13.                               res_icon3,'icon_c.ico',\
    14.                               res_icon4,'icon_d.ico'
    Так извлекаю в коде:

    Код (Text):
    1. ...
    2.            invoke   GetModuleHandle, 0
    3.            mov      [hModule], EAX
    4.            ...
    5.            invoke   LoadIcon, [hModule], 10
    6.            ...
    7.            invoke   LoadIcon, [hModule], 11
    8.            ...
    И это не работает.. А работает только это:

    Код (Text):
    1.            invoke   LoadIcon, [hModule], 1
    Т.е. извлекается только, почемуто, иконка по индексу 1, которого у меня нет, и эта иконка соответствует индексу 10

    Вопрос?
     
  2. Ezrah

    Ezrah Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    411
    Protorus
    Иконки объединяются в группы, как правило для того, чтобы система при загрузке оной, могла бы выбрать самую подходящую по размеру, т.е. в группу помещаются одинаковые иконки различных размеров. Система загружает иконку именно по номеру, указанному в RT_GROUP_ICON. Если Вам нужно несколько различных иконок, следует делать так:

    Код (Text):
    1. IDI_A = 10
    2. IDI_B = 11
    3. IDI_C = 12
    4. IDI_D = 13
    5.  
    6. directory   RT_ICON, dir_icons, \
    7.         RT_GROUP_ICON, dir_groupicons
    8.  
    9. resource    dir_icons, \
    10.         1, LANG_NEUTRAL, res_icon_a, \
    11.         2, LANG_NEUTRAL, res_icon_b, \
    12.         3, LANG_NEUTRAL, res_icon_c, \
    13.         4, LANG_NEUTRAL, res_icon_d
    14.  
    15.  
    16. resource    dir_groupicons, \
    17.         IDI_A, LANG_NEUTRAL, res_groupicon_a, \
    18.         IDI_B, LANG_NEUTRAL, res_groupicon_b, \
    19.         IDI_C, LANG_NEUTRAL, res_groupicon_c, \
    20.         IDI_D, LANG_NEUTRAL, res_groupicon_d
    21.  
    22.  
    23. icon    res_groupicon_a, res_icon_a, 'icon_a.ico', \
    24.     res_groupicon_b, res_icon_b, 'icon_b.ico', \
    25.     res_groupicon_c, res_icon_c, 'icon_c.ico', \
    26.     res_groupicon_d, res_icon_d, 'icon_d.ico'
     
  3. Protorus

    Protorus New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2009
    Сообщения:
    51
    Спасибо, помогло..

    Позволю себе выложить более рабочую версию:

    Код (Text):
    1. directory RT_GROUP_ICON,dir_groupicons,\
    2.           RT_ICON,dir_icons,\
    3.  
    4.     resource  dir_groupicons,10,LANG_NEUTRAL,res_groupicon10,\
    5.                  20,LANG_NEUTRAL,res_groupicon20,\
    6.                  30,LANG_NEUTRAL,res_groupicon30,\
    7.                  40,LANG_NEUTRAL,res_groupicon40
    8.  
    9.     resource  dir_icons,11,LANG_NEUTRAL,res_icon11,\
    10.                 21,LANG_NEUTRAL,res_icon21,\
    11.                 31,LANG_NEUTRAL,res_icon31,\
    12.                 41,LANG_NEUTRAL,res_icon41
    13.  
    14.     icon      res_groupicon10,res_icon11,'icon_a.ico'
    15.  
    16.     icon      res_groupicon20,res_icon21,'icon_b.ico'
    17.  
    18.     icon      res_groupicon30,res_icon31,'icon_c.ico'
    19.  
    20.     icon      res_groupicon40,res_icon41,'icon_d.ico'
    Если последние строчки не разбить то FASM на меня ругается..