Re[7]: Вопрос - как динамически обновлять ММС?
От: Тимур  
Дата: 06.03.02 17:43
Оценка:
Здравствуйте Тимур, Вы писали:

Т>Здравствуйте Admiral, Вы писали:


A>>Здравствуйте Тимур, Вы писали:


Т>>>Здравствуйте Admiral, Вы писали:

Т>>>Извините, забыл зайти как положено и появился в форуме как аноним.
Т>>>Итак, еще раз.
Т>>>Я делаю следующее:

Т>>>
Т>>>HRESULT CMyClassData::AddNew(bool& bHandled, CSnapInObjectRootBase* pObj) 
Т>>>{ 
Т>>>  CAddDLG dlgAdd; 
Т>>>  int ret=dlgAdd.DoModal(); 
Т>>>  if(ret==IDOK) 
Т>>>  { 
Т>>>    std::auto_ptr <CChildData> spData(new CChildData(dlgAdd.m_Name));
Т>>>    m_myCollection.push_back(spData); 
Т>>>    CComPtr<IConsole> mCons; 
Т>>>    mCons=((CMyClass*)pObj)->>m_spConsole ; 
Т>>>    CComQIPtr<IConsoleNameSpace, &IID_IConsoleNameSpace> spConsoleNameSpace(mCons); 
Т>>>    SCOPEDATAITEM sdi; 
Т>>>    ::ZeroMemory(&sdi,sizeof(SCOPEDATAITEM)); 
Т>>>    sdi.mask =SDI_STR | SDI_PARAM | SDI_IMAGE | SDI_OPENIMAGE | SDI_PARENT; 
Т>>>    spData->>GetScopePaneInfo(&sdi); 
Т>>>    sdi.displayname =MMC_CALLBACK; 
Т>>>    sdi.relativeID = spData->get_Cookie(); 
Т>>>    HRESULT hr=spConsoleNameSpace->InsertItem (&sdi); } 
Т>>>  } 
Т>>>  bHandled=false;//true; 
Т>>>  return S_OK; 
Т>>>}; 
Т>>>

Т>>>InsertItem возвращает ошибку и ничего не вставляет.
Т>>>Очевидно, что я делаю что-то не так. Но что — если есть какие-нибудь идеи, буду очень благодарен.
Т>>>Тимур

A>>Что возвращает spData->get_Cookie()? Если HSCOPEITEM родителя, тогда я пока затрудняюсь ответить, что не так.


A>>ЗЫ:

A>>Кстати, об auto_ptr:
A>>http://rsdn.ru/forum/message.asp?mid=32311
Автор: Рек
Дата: 28.02.02


Т>Похоже, что Вы правы — get_Cookie возвращает что-то не то. А где добыть HSCOPEITEM родителя?


Спасибо всем — вроде бы заработало. HSCOPEITEM родителя запоминается при первом обращении к Notify и потом может быть использовано.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.