C #: выделение «указателя на массив int» из SendMessage () lParam
Я пытаюсь создать подкласс неуправляемого окна строки состояния из моего управляемого COM-сервера, используя класс, унаследованный от NativeWindow, и врезаюсь в стену, пытаясь понять, как правильно распределить содержимое lParam.
http://msdn.microsoft.com/en-us/library/bb760757%28VS.85%29.aspx говорит, что содержимое этого lParam имеет тип(LPARAM)(LPINT) aWidths
и что содержимое этой переменной на самом деле является "указатель на целочисленный массив. "
Я могу'не могу придумать, как правильно это сделать. Цель состоит в том, чтобы прочитать lParam, добавить наше значение в массив, а затем отправить новое сообщение через.base.wndProc(ref m)
Это'было бы хорошо, если бы я мог простоint[] array = (int[])m.*lParam
или что-то такое, но жизнь неэто так просто (и я неиспользовать небезопасный код). Я'Мы неуклюже пытались заставить маршаллера дать мне что-то черезMarshal.PtrToStructure()
но знал, что это было обречено с самого начала, так как C-массив неструктура и структура, которую я пытался создать, очевидно, не являются блистерными.
Прямо сейчас мы позволяем исходному вызову пройти, а затем делаем дополнительные вызовы WinAPI, чтобы получить массив, отформатировать его, а затем повторно отправить его, прежде чем строка состояния сможет перерисоваться. Это работает хорошо, но недостаточно хорошо.
Есть идеи?
Спасибо!
Том
PS- яУ нас было много проблем с поиском использования lParams в C #, документация довольно запутанная: - /