Re: Переменная Com объекта
От: Rocky  
Дата: 02.11.08 16:55
Оценка: 3 (1)
Здравствуйте, Visperer, Вы писали:

V>Сразу извиняюсь за все огрехи, я начинающий програмист.

V>Возникла проблема:
V>В VS 2008 cоздаю "Atl project" , в него добавляю ATL simple object под назанием "MyCom".(создаются соответсвующие объекты со стандартными именами)
V>Далее определяю свои методы и ивенты. Все работает замечательно.
V>В окне Class View для объекта CMyCom добавляю свойство "state"(int), которое изменяется в процессе выполнения программы.
V>Потом в основном проекте(C#) создаю экземпляр CMyCom, и работаю с ним. Все замечательно, НО! созданное свйство state в этом случае не видно.
V>Тогда я для объекта IMyCom создаю property "state", для которой автоматически генерируются функции get_state и put_state.
V>После проделанных манипуляций свойство state видно в основном проекте но всегда равно 0.
V>В момент обращения в основном проекте к свойству state внутри ком объекта происходит вызов функции get_state:
V>
V>STDMETHODIMP CMyCom::get_state(int* pVal)
V>{
V>    pVal = &(this->state);
V>    return S_OK;
V>}
V>

this->>state в этот момент равно 1.
V>pVal тоже заполняется правильно, но вот в основном проекте ответ все равно 0.
V>Подскажите — где я косячу?

Это из-за того, что ты меняшь указатель. Тебе в get_state передается ссылка, по которой надо положить значение:
STDMETHODIMP CMyCom::get_state(int* pVal)
{
    *pVal = this->state;
    return S_OK;
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.