Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Привидение типов C# и C++

47K
29 октября 2011 года
9l.
33 / / 04.05.2010
Есть функция на C#:
public void Init(HWND__* hWnd);
Попытался передать туда Form1.ActiveForm.Handle, не выходит. Что надо передавать туда?
278
29 октября 2011 года
Alexander92
1.1K / / 04.08.2008
[offtop]
Поделись, что надо употреблять, чтобы тебе явилось привИдение типов? :D (c) русский язык
[/offtop]

По сабжу: если ты работаешь только в рамках .NET, то вряд ли тебе нужно использовать такую функцию, как ты описал. Передача указателей - отнюдь не .NET-стиль. В крайнем случае, передай IntPtr, а того лучше - просто ссылку на окно. Зачем тебе HWND__* передавать понадобилось?
47K
29 октября 2011 года
9l.
33 / / 04.05.2010
[irony]
xxx: Словно умудренные жизненным опытом стервятники в пустыне, они смотрят вслед проползающим путникам. На вопрос, где можно напиться, они долго обсуждают, нужна ли тебе вода и неизменно приходят к выводу, что нет, тебе, брат, вода ни к чему. Неспешно перечисляют причины, по которым тебе лучше жить без воды. И ни один из них не покажет в какой стороне колодец.

xxx: Ебучие ИТ-форумы.
[/irony]

Используется левая dll'ка которой нужен дескриптор окна, т.е. HWND__*
278
29 октября 2011 года
Alexander92
1.1K / / 04.08.2008
Тогда читай про маршалинг. Делай через DLLImport, что-то вроде:
[CODE=C#]
[DLLImport("YourLib.dll")]
public static extern Init(IntPtr hWnd);
[/CODE]
И пиши, как и писал, через Handle.
47K
29 октября 2011 года
9l.
33 / / 04.05.2010
Обязательно через DLLImport? Сейчас библиотека подключается просто через ссылку. И да, в таком случае вроде как экспортируемые функции автоматически создаются, или нет? Просто C# не особо знаю, это не моя задача, а тут вот перекинули на меня свою работу и приходится :(

P.S. И вообще что это за тип такой HWND__* нигде не объявленный?
278
29 октября 2011 года
Alexander92
1.1K / / 04.08.2008
Вот пример, как можно сделать без непосредственного маршалинга. Но лучше делать красиво, то бишь через маршалинг.

Теперь - что такое struct HWND__. Это то, на что указывает HWND. :) HWND - это ведь не какое-то отфонарное число, это указатель на соответствующую структуру.
297
29 октября 2011 года
koodeer
1.2K / / 02.05.2009
Цитата: 9l.

xxx: Словно умудренные жизненным опытом стервятники в пустыне, они смотрят вслед проползающим путникам. На вопрос, где можно напиться, они долго обсуждают, нужна ли тебе вода и неизменно приходят к выводу, что нет, тебе, брат, вода ни к чему. Неспешно перечисляют причины, по которым тебе лучше жить без воды. И ни один из них не покажет в какой стороне колодец.


И будем дальше так поступать! Мы всегда будем предельно точно выяснять, зачем человеку вода. Потому что когда отводишь кого-либо за ручку к источнику питьевой воды, предварительно всё не выяснив, он плюёт туда, или ссыт, или моет там свою машину. Поэтому, не раз нарвавшись на такое поведение, мы переоблачаемся в стервятников, и тщательно охраняем те жалкие остатки бесценного дара - чистой воды.

Ибо:

Цитата: 9l.
Есть функция на C#:
public void Init(HWND__* hWnd);
Попытался передать туда Form1.ActiveForm.Handle, не выходит. Что надо передавать туда?


Что не выходит-то? Не компилируется? Падает с ошибкой? Какую ошибку выдаёт? Конкретно, с описанием, с номером.
Ибо задолбали ламеры!
А вот и подтверждение:

Цитата: 9l.
Обязательно через DLLImport? Сейчас библиотека подключается просто через ссылку. И да, в таком случае вроде как экспортируемые функции автоматически создаются, или нет? Просто C# не особо знаю, это не моя задача, а тут вот перекинули на меня свою работу и приходится :(





Цитата: 9l.
P.S. И вообще что это за тип такой HWND__* нигде не объявленный?


Это мы должны знать? Не видя вашего кода, не зная, откуда вы взяли ту функцию?

47K
30 октября 2011 года
9l.
33 / / 04.05.2010
Спасибо Alexander92, с вашей помощью я написал временный костыль, а с более изящным решением и маршалингом пусть разбираются другие. :D
koodeer, я и правда ламер, ибо C# не моя прямая обязанность. Ваши замечания я учту. Спасибо.
278
30 октября 2011 года
Alexander92
1.1K / / 04.08.2008
Цитата: 9l.
Спасибо Alexander92, с вашей помощью я написал временный костыль.


Вот не люблю быть идейным вдохновителем костылей. :D

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог