Visual studio. Работа с ресурсами

Тема в разделе "WASM.BEGINNERS", создана пользователем Colibri, 12 май 2008.

  1. Colibri

    Colibri New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    117
    Предположим есть файл, который я хочу вложить в свой проект в качестве ресурсов.
    Создаю ресурсы, добавляю файл.
    После компиляции проекта в hex-редакторе видно, что требуемый файл в собранном ехе присутствует.

    А вопрос такой: как в своем проекте обращаться к добавленному ресурсу? В смысле, не искать же его сигнатуру во всем АП?

    Заранее благодарен за ваши ответы
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Судя по всему у Вас свой тип ресурса. Попробуйте так:

    ResID - идентификатор ресурса
    ResType - тип ресурса
    В resSize возвращается размер ресурса
    Функция возвращает указатель на начало ресурса в памяти.
    Код (Text):
    1. char *LoadResData(int ResID, char *ResType, DWORD &resSize)
    2. {
    3.     HGLOBAL resHandle;
    4.     HRSRC resInfoHandle;
    5.     resInfoHandle = FindResource (NULL,MAKEINTRESOURCE(ResID),ResType);
    6.     resHandle = LoadResource(NULL,resInfoHandle);
    7.     resSize = SizeofResource(NULL,resInfoHandle);
    8.     return (char *)LockResource(resHandle);
    9. }
    LockResource в данном случае для красоты (соответствия MSDN), т.к. resHandle уже является указателем на ресурс.
    Читайте MSDN по упомянутым функциям, а также специальным для стандартных типов ресурсов.
     
  3. Colibri

    Colibri New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    117
    l_inc
    огромное спасибо!
    ушел читать мсдн и статьи рсдн :)
     
  4. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Colibri
    в KmdKit на сайте есть живой пример.
    кажется тема уже поднималась.
     
  5. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Правда для красоты? А я слышал, что у секцию ресурсов может вдруг выбросить из памяти, если LockResource не сделаешь. Кому верить, что почитать?
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    iZzz32
    Для Win2000/XP/Vista это ерунда. А почитать исходник функции:
    XP/Vista:
    Код (Text):
    1. MOV EDI, EDI
    2. PUSH EBP
    3. MOV EBP,ESP
    4. MOV EAX,[EBP+8]
    5. POP EBP
    6. RETN 4
    Win2000:
    Код (Text):
    1. MOV EAX,[ESP+4]
    2. RETN 4
     
  7. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    l_inc, спасибо.