Привидение типов C# и C++
public void Init(HWND__* hWnd);
Попытался передать туда Form1.ActiveForm.Handle, не выходит. Что надо передавать туда?
Поделись, что надо употреблять, чтобы тебе явилось привИдение типов? :D (c) русский язык
[/offtop]
По сабжу: если ты работаешь только в рамках .NET, то вряд ли тебе нужно использовать такую функцию, как ты описал. Передача указателей - отнюдь не .NET-стиль. В крайнем случае, передай IntPtr, а того лучше - просто ссылку на окно. Зачем тебе HWND__* передавать понадобилось?
xxx: Словно умудренные жизненным опытом стервятники в пустыне, они смотрят вслед проползающим путникам. На вопрос, где можно напиться, они долго обсуждают, нужна ли тебе вода и неизменно приходят к выводу, что нет, тебе, брат, вода ни к чему. Неспешно перечисляют причины, по которым тебе лучше жить без воды. И ни один из них не покажет в какой стороне колодец.
xxx: Ебучие ИТ-форумы.
[/irony]
Используется левая dll'ка которой нужен дескриптор окна, т.е. HWND__*
[CODE=C#]
[DLLImport("YourLib.dll")]
public static extern Init(IntPtr hWnd);
[/CODE]
И пиши, как и писал, через Handle.
P.S. И вообще что это за тип такой HWND__* нигде не объявленный?
Вот пример, как можно сделать без непосредственного маршалинга. Но лучше делать красиво, то бишь через маршалинг.
Теперь - что такое struct HWND__. Это то, на что указывает HWND. :) HWND - это ведь не какое-то отфонарное число, это указатель на соответствующую структуру.
Теперь - что такое struct HWND__. Это то, на что указывает HWND. :) HWND - это ведь не какое-то отфонарное число, это указатель на соответствующую структуру.
Цитата: 9l.
xxx: Словно умудренные жизненным опытом стервятники в пустыне, они смотрят вслед проползающим путникам. На вопрос, где можно напиться, они долго обсуждают, нужна ли тебе вода и неизменно приходят к выводу, что нет, тебе, брат, вода ни к чему. Неспешно перечисляют причины, по которым тебе лучше жить без воды. И ни один из них не покажет в какой стороне колодец.
И будем дальше так поступать! Мы всегда будем предельно точно выяснять, зачем человеку вода. Потому что когда отводишь кого-либо за ручку к источнику питьевой воды, предварительно всё не выяснив, он плюёт туда, или ссыт, или моет там свою машину. Поэтому, не раз нарвавшись на такое поведение, мы переоблачаемся в стервятников, и тщательно охраняем те жалкие остатки бесценного дара - чистой воды.
Ибо:
Цитата: 9l.
Есть функция на C#:
public void Init(HWND__* hWnd);
Попытался передать туда Form1.ActiveForm.Handle, не выходит. Что надо передавать туда?
public void Init(HWND__* hWnd);
Попытался передать туда Form1.ActiveForm.Handle, не выходит. Что надо передавать туда?
Что не выходит-то? Не компилируется? Падает с ошибкой? Какую ошибку выдаёт? Конкретно, с описанием, с номером.
Ибо задолбали ламеры!
А вот и подтверждение:
Цитата: 9l.
Обязательно через DLLImport? Сейчас библиотека подключается просто через ссылку. И да, в таком случае вроде как экспортируемые функции автоматически создаются, или нет? Просто C# не особо знаю, это не моя задача, а тут вот перекинули на меня свою работу и приходится :(
Цитата: 9l.
P.S. И вообще что это за тип такой HWND__* нигде не объявленный?
Это мы должны знать? Не видя вашего кода, не зная, откуда вы взяли ту функцию?
koodeer, я и правда ламер, ибо C# не моя прямая обязанность. Ваши замечания я учту. Спасибо.
Цитата: 9l.
Спасибо Alexander92, с вашей помощью я написал временный костыль.
Вот не люблю быть идейным вдохновителем костылей. :D