Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Из .exe проекта сделать .dll

27K
04 июня 2007 года
aush
4 / / 04.06.2007
Мое первое сообщение на форуме, посему: Приветствую всех участников форума!

Буду писать максимально подробно, ибо дело очень срочное, сразу прошу прощения за возможные "грубейшие" ошибки из-за непонимания - не так давно работаю в си))

Итак, что имеем - проект, созданный в Visual Studio 6 с помощью MFC AppWizard (exe). Проект имеет структуру:
- Source Files / sig4.cpp ; sig4Dlg.cpp ; sig4.rc ; StdAfx.cpp
- Header Files / sig4.h ; sig4Dlg.h ; Resource.h ; StdAfx.h
- Resource Files / sig4.ico ; sig4.rc2

Задача: "Программа должна быть выполнена в виде процедуры, находящейся в какой-нибудь динамически подключаемой библиотеке."

Пытаясь работать мозгом я пришел к такому умозаключению: в длл-ке имеет одна основная процедура, которая вызывается внешней программой и которая содержит основной исполняемй код моей программы. Близко к правде?

Дальше: первое, что приходит в голову - создать новый проект посредством MFC AppWizard (dll).
Плучаем: - Source Files / DLLsig.cpp ; DLLsig.def ; DLLsig.rc ; StdAfx.cpp
- Header Files / DLLsig.h ; Resource.h ; StdAfx.h
- Resource Files / sig4.rc2


А теперь задам вопросы списком:

1) Где в длл информация о расположении окон, кнопок и т.п. т.е того, что я могу визуально редактировать в случае ехе проекта кликнув по sig4.rc->dialog

2) Основной код моей программы находится в sig4Dlg.cpp. Большая часть процедур в нем - реакция на нажатия кнопок на форме. Как это должно выглядеть в проекте длл ?

3) При создании ехе проекта в sig4Dlg.cpp уже имеется некоторый код, в том числе функции BOOL Csig4Dlg::OnInitDialog() и void Csig4Dlg::OnPaint()
В OnPaint у меня имеется код такого вида

 
Код:
CClientDC dc(this);
CPen NewPen(PS_SOLID, 1, RGB(0,255,0)) ;
CBrush NewBrush(RGB(0,0,0));
HRGN hRegion1 = CreateRectRgn(xa1,ya1,xa2,ya2);
HRGN hRegion2 = CreateRectRgn(xa1,ya1+285,xa2,ya2+285);
HRGN hRegion3 = CreateRectRgn(xa1,ya1+570,xa2,ya2+570);
FillRgn(dc, hRegion1, NewBrush);
FillRgn(dc, hRegion2, NewBrush);
FillRgn(dc, hRegion3, NewBrush);


Где переменным xa1, ya1 и т.д. начальные значения присваиваются в OnInitDialog (впрочем, это не важно - можно их и здесь заранее задать)

Как это реализовывается в проекте длл-ки?


Если собраться все в кучу, то имеется один глобальный вопрос - что и куда перекинуть из ехе проекта в длл проект так, чтобы оно работало?

Заранее огромное спасибо за помощь!


P.S.: если все-таки я где-то прогнал чушь какую-то, то могу выложить сам ехе проект, если надо будет
370
04 июня 2007 года
koval
443 / / 29.08.2005
1. Для началтебе нужно стпомощью чудо Wizarda сгенерировать проект MFC Dll. Дальше View->resurce view(там и создаешь новый диалог и визуально редактируешь).
2. Максимум что можно спрятать в dll проект это обычный диалог ни о каких формах речь идти не может. Можешь сделать несколько экспортирумых функций, которые будешь использовать в ехе проекте.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог