IntPtr::ToPointer и HWND
От: yurikl http://www.yurikl.h.com.ua/
Дата: 10.03.08 22:08
Оценка:
Доброго времени суток!
Функция IntPtr::ToPointer преобразует указатель в безтиповый, т.е. в void*.
Тип HWND тоже фактически есть void*.
Почему при подстановке в функцию SetForegroundWindow указателя, полученного функцией IntPtr::ToPointer, получаю ошибку о невозможности приведения типов void* и HWND?
Заранее благодарен.
Re: IntPtr::ToPointer и HWND
От: korzh.pavel Россия  
Дата: 10.03.08 22:20
Оценка: 3 (1)
Здравствуйте, yurikl, Вы писали:

Y>Доброго времени суток!

Y>Функция IntPtr::ToPointer преобразует указатель в безтиповый, т.е. в void*.
Y>Тип HWND тоже фактически есть void*.
Y>Почему при подстановке в функцию SetForegroundWindow указателя, полученного функцией IntPtr::ToPointer, получаю ошибку о невозможности приведения типов void* и HWND?
Y>Заранее благодарен.

если не определён макрос NO_STRICT перед включением windows.h то HWND будет иметь тип отличный от void*, что то типа struct HWND__ *
Re[2]: IntPtr::ToPointer и HWND
От: Кодт Россия  
Дата: 11.03.08 14:29
Оценка: 3 (1)
Здравствуйте, korzh.pavel, Вы писали:

KP>если не определён макрос NO_STRICT перед включением windows.h то HWND будет иметь тип отличный от void*, что то типа struct HWND__ *


И ещё, это сделано как раз для того, чтобы не валить все типы хэндлов (HWND, HANDLE, HMODULE, HGDIOBJ и проч., и проч.) в одну большую кучу — и тем самым плодить ошибки при неправильном использовании.

Правда, зачем в винапи сделана разница между HINSTANCE и HMODULE — мне непонятно.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[3]: IntPtr::ToPointer и HWND
От: korzh.pavel Россия  
Дата: 11.03.08 14:33
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Правда, зачем в винапи сделана разница между HINSTANCE и HMODULE — мне непонятно.


http://blogs.msdn.com/oldnewthing/archive/2004/06/14/155107.aspx
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.