Из .exe проекта сделать .dll
Буду писать максимально подробно, ибо дело очень срочное, сразу прошу прощения за возможные "грубейшие" ошибки из-за непонимания - не так давно работаю в си))
Итак, что имеем - проект, созданный в 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);
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.: если все-таки я где-то прогнал чушь какую-то, то могу выложить сам ехе проект, если надо будет
2. Максимум что можно спрятать в dll проект это обычный диалог ни о каких формах речь идти не может. Можешь сделать несколько экспортирумых функций, которые будешь использовать в ехе проекте.