Cтатьи: Листер плагин на Delphi и C++Builder

Форум о самом популярном файловом менеджере Total Commander

Сообщение mutex » Ср мар 24, 2004 11:10 pm

Две статьи: "Листер плагин на Borland Delphi 7 для начинающих" и "Листер плагин на Borland C++ Builder 6 для начинающих".

Вот ссылки к ним:
<a href='http://wincmd.ru/article/ListSimple.html' target='_blank'>http://wincmd.ru/article/ListSimple.html</a>
<a href='http://wincmd.ru/article/ListSimpleBcb.html' target='_blank'>http://wincmd.ru/article/ListSimpleBcb.html</a>

А, вот ссылки к примерам, рассматриваемых в статьях:
<a href='http://www.wincmd.ru/plugring/ListSimple.html' target='_blank'>http://www.wincmd.ru/plugring/ListSimple.html</a>
<a href='http://www.wincmd.ru/plugring/ListSimpleBcb.html' target='_blank'>http://www.wincmd.ru/plugring/ListSimpleBcb.html</a>

Давайте, в данной теме форума обсудим эти проблемы, найдем решения получше, чем в статьях, и объясним тонкие моменты начинающим плагино-разработчикам.
Автор: Е.Савич
mutex
Старшина
 
Сообщений: 50
Зарегистрирован: Чт фев 12, 2004 5:07 pm
Пункты репутации: 0

Сообщение poiuytr » Чт мар 25, 2004 9:34 pm

А давайте.
Есть еще вариант уничтожение VCL объекта при ListCloseWindow.
можно воспользоваться VCL'овской же функцией TWinControl* __fastcall FindControl(HWND Handle), которая по дескриптору вернет ссылку на форму, которую мы создали в ListLoad.
Примерик:
Код: выделить все
extern "C" void __export WINAPI ListCloseWindow(HWND ListWin)
{
 TWinControl *obj;
 obj = FindControl(ListWin);
 if (obj)
   delete obj;
}
С таким подходом не придется заморачиваться на хранение этого указателя. И никаких GetWindowLong() :)

<!--QuoteBegin-статья+--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата (статья)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Замечание: ПЛАГИН НЕ ДОЛЖЕН ИСПОЛЬЗОВАТЬ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ!<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->Наверное стоило добавить: потому что несколько экземпляров Листера могут быть открыты одновременно, и эти несколько экземпляров будут разделять все глобальные переменные (то бишь разные экземпляры будут пользоваться общими глобальными переменными).
Hasta la victoria siempre!
poiuytr
Капитан
 
Сообщений: 233
Зарегистрирован: Ср авг 14, 2002 6:04 pm
Откуда: Рига, Латвия
Пункты репутации: 0

Сообщение mutex » Пт мар 26, 2004 8:41 am

<!--QuoteBegin-poiuytr+Mar 26 2004, 03:34--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата (poiuytr @ Mar 26 2004, 03:34)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Есть еще вариант уничтожение VCL объекта при ListCloseWindow.
можно воспользоваться VCL'овской же функцией TWinControl* __fastcall FindControl(HWND Handle), которая по дескриптору вернет ссылку на форму, которую мы создали в ListLoad.
<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
<!--QuoteBegin-poiuytr+Mar 26 2004, 03:34--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата (poiuytr @ Mar 26 2004, 03:34)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->
И никаких GetWindowLong() Изображение
<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Надо проверить! Если это работает, то - идея - великолепна!!!

<!--QuoteBegin-poiuytr+Mar 26 2004, 03:34--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата (poiuytr @ Mar 26 2004, 03:34)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Наверное стоило добавить: потому что несколько экземпляров Листера могут быть открыты одновременно, и эти несколько экземпляров будут разделять все глобальные переменные (то бишь разные экземпляры будут пользоваться общими глобальными переменными).
<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->

Очень даже стоило!
mutex
Старшина
 
Сообщений: 50
Зарегистрирован: Чт фев 12, 2004 5:07 pm
Пункты репутации: 0

Сообщение poiuytr » Пт мар 26, 2004 9:27 am

<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Надо проверить! Если это работает...<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Работает, проверено :)
Hasta la victoria siempre!
poiuytr
Капитан
 
Сообщений: 233
Зарегистрирован: Ср авг 14, 2002 6:04 pm
Откуда: Рига, Латвия
Пункты репутации: 0


Вернуться в Total Commander

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron