Guest |
Отправлено: 15.02.2004, 14:09 |
|
Не зарегистрирован
|
Привет!
Интересует, как пишутся расширяемые программы. Ну например возьмём
такую прогу как Miranda. Там все дополнительные фичи реализованы через разные DLL. Я конечно понимаю, что такое DLL и как она работает. Но как можно написать DLL, которая изменяет или добавляет какие-то объекты(или визуальные элементы) на главную формы Миранды ?!!!??!
Ну например в Миранде есть плагин SmileyAdd, который при его подключении добавляет в окно сообщений Миранды кнопку со смайлами и соответственно обработчики для обработки нажатия и т.д...
Мне непонятно, каким же все-таки образом можно написать подобную вещь, не изменяя исходного кода Миранды ?! Неужели все реализовано в DLL?? Тогда каким макаром на главной форме Миранды, вернее в окне сообщений создаётся эта кнопка со смайлами?
Каким образом пишутся подобные вещи? Очень интересно. Если есть ссылки на какие-нибудь статьи по этому поводу или исходники подобных прог,то plz поделитесь.
|
|
** pasha |
Отправлено: 15.02.2004, 17:54 |
|
Не зарегистрирован
|
А в чем проблема ? Создаете компоненты динамически.
---
Например, в главной программе на форме есть меню (MainMenu),
нужно в dll создать новые пункты меню.
В программе (exe) определяете
extern "C" void __declspec(dllimport) CreateNewMenuItem(char* sp, TMenuItem* NMP);
Вызывате:
CreateNewMenuItem("Новый пункт меню", N2);
В dll определяете эту функцию
Создаете динамически подменю в меню, указатель на который
передан из главной формы в функции CreateNewMenuItem()
CODE |
TMenuItem* NMPrint;
NMPrint->Clear();
TMenuItem* Itm = new TMenuItem(NMPrint);
Itm->Caption = sp;
Itm->Name = "NARep_"+IntToStr(i);
NMPrint->Add(Itm);
|
На главной форме появляются новые пункты меню.
Также можете создавать и другие компоненты — кнопки и т.д
|
|
Guest |
Отправлено: 16.02.2004, 14:28 |
|
Не зарегистрирован
|
Спасибо за объяснение. Но откуда к примеру основной exe знает, что кому-нить прийдет в голову написать Dll которная реализует на осн. форме кнопку именно в опред. месте?!
Этож нужно все предусмотреть?!
Т.е. чтобы каждый желающий чел, мог накатать свою Dll без изменения exe-шника..... |
|
Guest |
Отправлено: 19.02.2004, 17:05 |
|
Не зарегистрирован
|
http://www.buildercpp.net.ru/phpBB2/viewto...topic.php?t=231 |
|
|