![]() |
|
|
![]()
|
|
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Есть класс, унаследованный от диалога, внешний вид которога сделан с помощью редактора ресурсов. Как грамотно переносить такие классы из проекта в проект?
Ведь кроме h и cpp файла надо переносить еще и ресурсы. Которые не разбиты по разным файлам, как классы, а все в одном файле сидят. Я переношу строки из файлов ресурсов вручную. Но уж больно муторно. Может, есть какое-то более простое средство? -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 1 Всего: 44 |
Если проекты в одном солюшене, то можно в ResourceView просто перетащить мышкой
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Нет, в разных солюшинах. Я делал через буфер обмена - сначала открывал один проект, выделял нужные ресурсы и копировал, а в другой вставлял.А исходники отдельно переносил. Но это хорошо было в случае переноса в "пустой" проект, если же там есть ресурсы, в которых есть элементы с такими же ID, то получались глюки.
Блин, какого хрена они все ресурсы в один файл слепили? -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Думаю так
Добавляешь в проект ExtehdingItem два файла *.h и *.cpp этого класса У тебя будет прописан IDD диалога в *.cpp файле. Затем добаввляешь диалог. Для этого открываешь свои ресурсы и другие(откуда берешь) в блокноте Увидишь такое
Копипастишь в свои ресурсы.. Должно получится.. Может запары с ID пойдут--подправь... На всякий случай сделайй копию проекта и с копией попробуй -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Coocky
Спасибо. то есть получается так, что все равно часть кода придется вручную переносить. Хотя и незначительную. Кстати. В ресурсах размер элементов указывается вроде как в пикселах. (Я имею в виду цифры, которые в строке состояния отображаются при выделении элементов). У меня почему-то эти "единицы" не соответствуют реальным размерам в пикселах. Почему такое, не знаешь? -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Dreamer_0x01
Да, в клиентских координатах В моем примере высота окна 130, ширина 208
Это размеры "нарисованого".Если кодом не подгоняешь размер, то все должно быть нормально. У меня точно совпадают.. -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||
|
|||||
| Dreamer_0x01 |
|
||||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
А у меня не совпадает. Например, рисую баттон размером 100х50 (в редакторе ресурсов).
Затем четко под ним рисую кнопку, но уже кодом, тоже размером 100х50. В редакторе ресурсов у меня есть соответствующая надпись. (Извратился с дефолтной кнопкой "ОК").
А далее в диалоге создаю другую кнопку таким образом:
В итоге моя кнопка должна быть такая же как и кнопка "ОК" и рисоваться над ней. Но она рисуется размерамного меньшего, на глаз - это 66.66% от размера кнопки "ОК". (Точнее, если замерить в фотошопе, моя кнопка рисуется правильно, а вот кнопка ОК получается много больше, чем 100х50 пикселов.) -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
||||
|
|||||
| JoyEx |
|
||||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 5 Всего: 12 |
0,0,320,200 - это диалоговые единицы. См. GetDialogBaseUnits()
- В VC6 можно воспользоваться Component Gallery (галерея компонентов), в ней каждый класс хранится отдельно, но самый лучший способ это хранить .cpp, .h где-то в корневом каталоге и задавать к ним относительный путь в остальных проектах, чтобы в случае какойто ошибки не править все .cpp, .h. -------------------- Если ты уже никого не боишься, значит ты самый страшный |
||||
|
|||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
О блин как. Интересно, зачем это сделали... -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Dreamer_0x01 |
|
||||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Посмотрел. Нашел даже фрмулы для конвертации вида pixelX = MulDiv( templateunitX, baseunitX, 4 ); pixelY = MulDiv( templateunitY, baseunitY, 8 ); где pixelX и piselY получаю как
И все равно размеры не совпадают. Думаю, смысл как раз в этих двух формулах с мульдивом. Кто-нибудь может доступно объяснить, что есть единицы диалога? И как они высчитываются? -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
||||
|
|||||
| JoyEx |
|
||||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 5 Всего: 12 |
чтобы размеры диалога зависили от шрифта диалога
Зачем так? Есть же MapDialogRect() -------------------- Если ты уже никого не боишься, значит ты самый страшный |
||||
|
|||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
JoyEx
Спасибо! Теперь заработало. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Coocky
Нет, этого недостаточно. Кроме этого, там много ееще параметров, отвечающих за цвета, шрифты и процую лабуду. то есть эти куски тоже копирнуть надо. Кроме того, надо еще дефайны из старого resourse.h перенести. В общем, тоже весьма муторно. Я вот как сейчас стал делать. 1. Делаю резерную копию проекта. Думаю, не надо объяснять, почему ;) 2. Копирую в каталог нового проекта .h и .cpp файлы тех классов, которые хочу пененести из старого проекта. 3. В меню "Project"->"Add Existing Item..." в типе файла устанавливаю "Resource Files", выбираю файл "старый проект.rc". Одновременно подгрузится автоматически файл "Старый проект.rc2". 4. В Resource View открываем нужные ресурсы и копипастим нужные нам (Не претаскиваем, а именно копипастим, а то перетащим "насовсем" ;)) 5. Удаляем из проекта файлы "Старый проект.rc" и "Старый проет.rc2" 6. В .срр файлах перенесенных классов меняем "#include "Старый проект.h"" на "#include "Новый проект.h"" 7. На всякий случай открываем "Resource Simbols" и все там проверяем. У меня все нормально получилось, но как говорится на всякий случай... Вот вроде бы и все. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Dreamer_0x01
Ну я -то тебе примерно кинул, сам-то никогда не делал полностью переноску.. Уж извини, но я рад что ты сам до всего дошел -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Coocky
Я просто думал что это такой тривиальный вопрос, что меня тут же закидают мессагами, начинающимися с фразы "Ты будешь смеяться, но делается жто так...." А оказалось несколько сложнее. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |