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

this->state в этот момент равно 1.
pVal тоже заполняется правильно, но вот в основном проекте ответ все равно 0.
Подскажите — где я косячу?
com переменная
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>>
Re[2]: Переменная Com объекта
От: Visperer thelastpage.org
Дата: 03.11.08 07:41
Оценка:
Здравствуйте, Rocky, Вы писали:

R>Это из-за того, что ты меняшь указатель. Тебе в get_state передается ссылка, по которой надо положить значение:

R>
R>STDMETHODIMP CMyCom::get_state(int* pVal)
R>{
R>    *pVal = this->state;
R>    return S_OK;
R>}
R>


Да! Спасибо огромное, честно говоря такой подход я упустил)))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.