c++ cli unmanaged to managed data transaction
От: 4065d150cae5431d  
Дата: 23.07.11 09:03
Оценка:
я новичок поэтому не судите строго
unmanaged...
{
        ___asm...
        // how add result to managed controls ???
}
 
 
managed...
{
        // create controls
        // run message loop
        // run unmanaged subroutine as event handler
        unmanaged(); // do low level magic
}


пока я знаю всего пару решений одно из них
передать в unmanaged нативный хендл формы и
переопределить в форме WndProc и ждать некое MAGIC_MESSAGE
из нативного кода с указателем на данные после чего
managed код распихает инфу по контролам

просто для такого простого примера я бы мог передать контейнер
для заполнения и по возвращении обработать но
в программе длинный стек вызовов unmanaged кода
в конце формируются данные их постепенно надо выводить в контрол
причем поток управления из этого unmanaged стека не возвращается
это отдельный поток всегда работающий поэтому передать неуправляемый контейнер
вернутся и обработать не получается надо именно как то пересылать
где данные доступны managed коду существуют ли простые способы для этого ?


да и вообще если мне не только данные надо передать в managed стек а например
еще и .net методы подергать из unmanaged стека можно слать SendMessage коды
типа DO_WORK_XXXX по типу как DeviceIOControl а managed код получит сообщение
и сделает дело заодно ему можно указатель для записи результата передать
как вообще решаются эти задачи ? как по нормальному ?
Re: c++ cli unmanaged to managed data transaction
От: hardcase Пират http://nemerle.org
Дата: 24.07.11 11:57
Оценка:
Здравствуйте, 4065d150cae5431d, Вы писали:

4>да и вообще если мне не только данные надо передать в managed стек а например

4>еще и .net методы подергать из unmanaged стека можно слать SendMessage коды

Какую вообще вы решаете задачу?
Есть два штатных способа взаимодействия с управляемым кодом из неуправляемого: вызов колбэков (делегаты автоматически конвертируются в указатели при маршаллинге) и вызов методов COM-интерфейсов, реализациями которых выступает управляемый код.
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.