| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > LoadString строки из другого проекта |
| Автор: NiJazz 26.7.2005, 10:12 |
| Например, есть два MFC-приложения. В одном из них есть String Table со строками и идентификаторами. Как можно строки этого ресурса использовать в другом проекте? Добавлено @ 10:13 Ну разумеется, что второй проект поддерживает MFC и всё необходимое. |
| Автор: Coocky 26.7.2005, 10:41 |
| NiJazz Да никак, сорей всего, как ты к таблице другой достучишься? Или я не понял вопрос-тебе перенести в свою надо или работать с чужой?? |
| Автор: chaos 26.7.2005, 10:47 | ||
все просто) см. пример
поясняю: у тебя есть пирложение и допустим ты знаешь идентификаторы строк(те у тебя есть resource.h), ну а осьтальное думаю все понятно |
| Автор: chaos 26.7.2005, 10:57 |
| но это только при знании идентификаторов ресурсов |
| Автор: Coocky 26.7.2005, 11:00 |
| chaos А ну-ка обьясни, что ты делаешь-загружаешь таблицу и читаешь из нее строки? Хм... Надо справочник по API функциям купить |
| Автор: chaos 26.7.2005, 11:09 |
| сдесь я делаю: зная какие есть идентификаторы строк в программе(имею resource.h ее) я загружаю строки по их идентификатору. так! но может это не то что нужно автору топика |
| Автор: Coocky 26.7.2005, 11:20 |
| chaos Я вообще не пойму, зачем такое, если можно просто скопи-пастить в свою таблицу.. Ну ладно, если прийдет. пусть скажет.. А пример вообще интересный. |
| Автор: chaos 26.7.2005, 11:26 | ||
а вдруг у кого-то есть exe и resource.h и больше ни чего, тогда таким макаром можно дергать строчки |
| Автор: NiJazz 26.7.2005, 17:18 | ||
Coocky
Можно, но нетехнологично. Добавлено @ 17:23 chaos Спасибо, я думаю, что метод работающий. То есть берем бинарник, извлекаем нужный ресурс и пользуемся им. Но мне бы хотелось пользоваться строками из rc-файла, а не скомпонованного бинарника, так как эти два проекта в одном решении. А сидеть и копировать таблицу я бы не хотел, к тому же так могут быть ошибки (так как работа копипастера слишком машинальная). |
| Автор: Coocky 26.7.2005, 17:23 | ||
| NiJazz Ну, дык , работает пример chaos_а? Добавлено @ 17:25 Дык прочитать можно-то файл?
Вот из rc файла строка из таблицы... |
| Автор: Earnest 26.7.2005, 17:45 | ||||
Все правильно, метод точно работает. Только грузить библиотеку\exe надо через LoadLibraryEx с флагом DONT_RESOLVE_DLL_REFERENCES или LOAD_LIBRARY_AS_DATAFILE. Иначе она попробует разрешить все свои связи, а оно вам надо? Может и не получиться. Список ресурсов потом можно получить через разнообразные функции EnumResourseXXX, а конкретный ресурс - через LoadString, LoadIcon, etc.
Если два проекта (EXE) разделяют ресурсы - самое разумное вынести эти ресурсы в отдельную DLL и подключить ее к обоим проектам. Если общие ресурсы засунуть в MFC-extension DLL, то MFC приложение и само все найдет, нужно только позаботиться о разделении пулов идентитфикаторов. Потому как код MFC, например CWinApp::LoadString, ищет сначала нужный ресурс в заданном модуле (по-умолчанию - exe модуль), а потом по всей цепочке extension DLL. У кого первого найдет, того и тапки. |
| Автор: chaos 27.7.2005, 06:19 |
| сдесь вот тоже чето подобное обсуждается http://forum.vingrad.ru/index.php?showtopic=58391&st=0&unread=#entry477039 |