Вобщем стало интересно узнать все возможные способы работы с указателем, а точнее, как можно привести указатель на стуктуру к типу этой структуры. Вот например:
Function DeviceNotifyProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
wParam содержит событие, а в lParam передается указатель на соответствующую этому событию структуру. Ф-ция универсальная, соответсвенно объявить ByVal lParam As Long как ByRef lParam As [Нужный_тип] и потом работать с этой структурой не прокатывает.
Остаются два варианта. Точнее сказать я знаю эти два варианта, но они мне не очень нравятся.
Вариант 1:
Использовать переданный указатель как базу и обрабатывать структуру высчитывая соответствующие смещения.
Вариант 2:
Объявить переменную соответствующего типа и потом просто скопировать нужные данные в эту переменную и уже дальше удобно с ней работать, типо того CopyMemory VarPtr(DeviceBroadCastHeader), ByVal (lParam), SizeOf(DeviceBroadCastHeader) . Гораздо удобнее чем способ 1, но тоже на мой взгляд как-то корявенько и не эстетично.
Как мне кажется существуют и другие способы о существовании которых я не знаю, но думаю, что они есть.
А теперь собственно и сам вопрос.
Как можно удобно и эстетично приводить указатель к нужному типу и далее удобно работать с нужной структурой?