У меня есть DLL, которая заботится о собственном рисовании для некоторых специальных стеклянных эффектов.Я помещаю его в DLL по трем причинам: 1) Так что его можно легко использовать и распространять, конечно же, без утяжеления его хост-приложения, 2) Так что я могураспространять его среди разработчиков, не зная, как он работает, и 3) Так что его можно использовать из C #.В настоящее время он работает в Delphi, но я знаю, что мне нужно будет сделать много изменений, чтобы он поддерживал C #.Например, основная функция DLL включает в себя 1 параметр (запись), который содержит несколько типов, которые, как я знаю, не будут работать в C # (например, String и, возможно, TColor).Проект еще не завершен на 100%, но работает.
Мне нужно, чтобы кто-то указал на самый простой подход для достижения этой цели.Код слишком велик, чтобы размещать все это здесь, поэтому здесь, в Pastebin .
Вот что мне нужно знать:
- Должен ли я продолжать использовать записи в том виде, в каком я есть, или использовать что-то еще, например, упакованную запись?
- Какие-нибудь хитрости использовать в этих записях что-либо кроме String или PChar?
- Как бы я обернуть эту DLL в C #?(Кстати, я очень мало знаю C #)
- Как определить эквивалентные записи для передачи в функцию DLL?
- Как определить эквивалентные константы в C #?(C # версия JDGlassCommon.pas)
- Как получить дескриптор холста (HDC) и родительский дескриптор (HWND) для отправки в DLL?
- Что будет эквивалентно TColor?
- Безопасно ли передавать в записях такие типы, как TColor?
- Предвидите ли вы какие-либо другие проблемы в моем коде?
ФайлСписок:
Библиотека: JDGlassLib.dll *
- Единица измерения: JDGlassCommon.pas
*
Упаковка: JDLib.bpl
- Единица измерения: JDGlassCommon.pas
*
- Единица измерения: JDGlass.pas
*
Программа: JDLibTestApplicationD7.exe
- Форма: JDLibTestAppD7.dfm
*
Единица измерения: JDLibTestAppD7.pas *
(*
= код включен в вышеуказанную ссылку )
( JDGlassCommon.pas совместно используется как DLL, так и компонентом )
Должно выглядеть примерно так:
ПРИМЕЧАНИЕ: Я не прошу переписать, хотя вы более чем рады.Мне просто нужно несколько советов о том, как подойти к этому.
PS: Оригинальный код рисования стекла, зачисленный в "NGLN" StackOverflow, отвечая на мой предыдущий вопрос: Delphiнестандартный рисунок - светящееся стекло