Здравствуйте konyaviy, Вы писали:
K>Здравствуйте Rand1, Вы писали:
R>>Здравствуйте konst_z, Вы писали:
KZ>>>Как вызвать PropertyPage не по соответствующему пункту меню,
KZ>>>а по другим действиям пользователя ?
KZ>>>В Platform SDK есть статья 'Using IPropertySheetProvider Directly' -
KZ>>>кто-нибудь разбирался с примером ?
KZ>>>какой IDataObject* туда надо передавать и что за функция ExtractCookie ?
R>>в качестве cookie — мы передавали (long) this
R>>IDataObject* — у нас был com-объект реализующий IDataObject, создавали его через CreateInstance и передавали куда надо
K>Ребя, а вы случайно не пробовали Wizard вызвать, просто вызвать странички у меня получается. В MSDN есть пример функции, но мне кажется там написант бред типа
K>if (S_OK == hr)
K> return S_FALSE;
K> Подскажите если можете
Лично я не занимался но у нас народ писал wizard'ы без проблем
Здравствуйте konyaviy, Вы писали:
K>Ребя, а вы случайно не пробовали Wizard вызвать, просто вызвать странички у меня получается. В MSDN есть пример функции, но мне кажется там написант бред типа
K> Подскажите если можете
http://codeproject.com/atl/mmcsnap.asp — там есть исходники. Все работоспособно.
Здравствуйте konst_z, Вы писали:
KZ>В Platform SDK есть статья 'Using IPropertySheetProvider Directly' -
KZ>кто-нибудь разбирался с примером ?
В примере из "Using IPropertySheetProvider Directly"
есть несколько тонкостей:
1.
hr = pPropertySheetProvider->CreatePropertySheet
(
NULL, // pointer to the property page title - не должен быть NULL :-)
// это написано в самом конце статьи по CreatePropertySheet
TRUE, // property sheet
ExtractCookie(piDataObject),
// cookie of current object - can be NULL
// for extension snap-ins
piDataObject, // data object of selected node
NULL // specifies flags set by the method call
);
2.
hr = pPropertySheetProvider->AddPrimaryPages
(
reinterpret_cast<IUnknown *>(this), // pointer to our
// object's IUnknown - это должен быть указатель на
// IComponent или IComponentData если следующий параметр стоит в TRUE
//и соответствовать значению последнего параметра: IComponent - FALSE,
//IComponentData - TRUE.
TRUE, // specifies whether to create a notification
// handle
NULL, // must be NULL
TRUE // scope pane; FALSE for result pane
);
А в остальном отличный пример