0 Members and 1 Guest are viewing this topic.
Как работает IAIMPMLGroupingTreeDataProviderSelection::GetValue(IAIMPString** FieldName, VARIANT** Value)? Присвоил *FieldName значение типа *IAIMPString и *Value тоже присвоил *IAIMPString(указателю punkVal, значение vt = VT_UNKNOWN). В итоге после завершения функции не доходя до GetCapabilities(после исключения идет вызов этой функции) выпадает исключение из-за попытки прочитать память которая ссылается на 0.
*Value - должен быть указателем на структуру типа VARIANT. Интерфейс туда пихать нельзя
И какой тип помещать в структуру VARIANT?Попробовал так:VARIANT variant;variant.vt = VT_BSTR;variant.bstrVal = SysAllocString(OLESTR("Text"));*Value = &variant;Получаю такую же ошибку
не знаю, я не работал с Variant на С++, я думаю, стоит обратиться к справке по Ole.
Ну объясните хотя бы значение функции getvalue, за что отвечает первый и второй аргумент, ибо в документации вообще никакого описания.
Названия аргументов разве не говорят сами за себя?
Хорошо... 1)FieldName - передаем те поля, которые заполнили в GetFields?1.1)Передаем в порядке добавления не учитывая AIMPML_RESERVED_FIELD_DURATION, AIMPML_RESERVED_FIELD_ID, AIMPML_RESERVED_FIELD_FILENAME?1.2)При дублировании что будет? Например два раза присвоил строку "Исполнитель".2)Value - ЗАЧЕМ? ДЛЯ ЧЕГО?2.1)Какими именно типами можно инициализировать экземпляр типа VARIANT чтобы после его присвоить в *Value?2.2)Что будет если не присвоить значение в Value? У меня, если я оставляю *Value не инициализированной - вызываются методы класса, который я унаследовал от IAIMPMLGroupingTreeDataProviderSelection, экземпляр этого класса создал и передал в переменную *Data в методе GetData класса который наследуется от IAIMPMLGroupingTreeDataProvider.
Запили бы пример MusicLibrary с IAIMPMLGroupingPreset вопросов было бы меньше. А вообще есть ли расширения от сторонних разработчиков использующее IAIMPMLGroupingPreset или IAIMPMLGroupingPreset использует только Артем?
Run-Time Check Failure #2 - Stack around the variable 'FieldName' was corrupted.Если FieldName и Value сделать как указатель на указатель то ошибки нет, но это скорее всего неправильно.Если что Selection.GetCount() = 0.
Value должен быть объявлен как значение, а не указатель. Там ошибка в описании интерфейса, если не ошибаюсь.