Re[3]: Выполнение функции GetClassInfoExA в C#
От: Pavel Dvorkin Россия  
Дата: 07.05.13 06:27
Оценка:
Здравствуйте, Meverik, Вы писали:

M>В C# пытаюсь работать с неуправляемым кодом DLL а конкретно с DLL написанной на Delphi содержащей форму.

M>Все создается, формой управляю, но вот когда из Delphi еще одна форма создается,
M>вот тут начинаются проблемы по созданию компонентов (расположенных на данной форме) основанных на стандартных оконных классах (TButton, TEdit и т.п.). Точнее объект Delphi класса создается, но
M>когда происходит создание Windows окна компонента (непосредственно метод TWinControl.CreateWnd), то с помощью GetClassInfoA вычисляется адрес стандартного оконного класса, а этот адрес уже не тот, что при создании компонентов на первой форме и соответственно при передачи его в CreateWindowEx функция в итоге не возвращает Handle окна, что приводит к ошибке RaiseLastOSError (A call to an OS function failed). После длительного разбора "полетов" пришел вот к такой особенности C#.... И как это обойти пока не ясно....

Могу предложить попробовать трюк. А именно, создать никому не нужную форму из C# до всей этой деятельности (сделать ее невидимой, конечно). Возможно, при этом вся деятельность по сабклассингу пройдет, так что создание как первой , так и второй Delphi форм будет происходить уже в условиях свершившегося сабклассинга. Поможет или нет — бог знает.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.