Здравствуйте ICBa, Вы писали:
ICB>Значит делаю я проект типа "MFC ActiveX control".
ICB>Там есть функция: ICB>void CTableCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) ICB>{ ICB>... ICB>}
ICB>Которая, на сколько я понял, отрабатывает при запуске моего ActiveX-а. ICB>В ней всё и рисуется, выводятся нужные данные и всё такое...
ICB>Еще есть у меня несколько публичных переменных и метод getData:
ICB>void CTableCtrl::getData(const VARIANT FAR& myData) ICB>{ ICB>... ICB>}
ICB>Который вызывается из контейнера и контейнер передает этому методу двумерный массив данных. ICB>В этом же методе строится SafeArray в который пихаются переданные данные.
ICB>Хочется разделить программу по блокам таки образом, чтобы: ICB>1. Сначала в ActiveX е что-то рисуется типа "Loading data..." и мы ждем пока getData получит данные и создаст SafeArray.
ICB>2. Потом мы вызываем некую третью функцию которая будет обрабатывать наш SafeArray массив и, в соответствии с данными в массиве, рисовать в ActiveX-е то что нам надо.
ICB>3. После обработки данных мы обрабатываем клики мышкой в нашем контроле и некоей четвертой функцией перерисовываем нужным образом некие области контрола.
ICB>Как это сделать? ICB>В основном интересует реализация пункта 2.
ICB>P.S. На сколько я понял при создани SafeArray-а мы используем SafeArrayAccessData для получения указателя на массив данных, а после окончания работы с этим массивом нам надо сделать SafeArrayUnaccessData ?
ICB>Yuri.
А как Вы делаете контейнер? На основе диалогового окна? Почему бы не добавить методов 1)"Подготовиться к приему данных" и 2)"Завершение приема данных" и не вызывать из контейнера 1), getData, 2)?