![]() |
|
|
![]()
|
|
| rainbow86 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 27.10.2005 Репутация: нет Всего: нет |
Пытаюсь добавить свой пункт в контекстное меню explorer'a.
Вот заголовочный файл
При компиляции выдает ошибки на строку: COM_INTERFACE_ENTRY(IContextMenu) error C2787:'IContextMenu' : no GUID has been associated with this object error C2440: 'initializing' : cannot convert from 'DWORD_PTR' to 'const IID *' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast error C2440: 'initializing' : cannot convert from 'ATL::_ATL_CREATORARGFUNC (__stdcall *)' to 'DWORD_PTR' Мож кто-нибудь знает в чем проблема? Заранее благодарен! |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Пытаюсь скомпилить тот-же пример скачаный с кодепрожекта.
Та-же ошибка. Что делать? -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Замените COM_INTERFACE_ENTRY(IContextMenu) на COM_INTERFACE_ENTRY_IID(IID_IContextMenu,IContextMenu)
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
xvr, да, спасибо, сработало.
Почему макрос COM_INTERFACE_ENTRY не сработал? -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Макрос COM_INTERFACE_ENTRY получает GUID интерфейса через оператор __uuidof() (расширение MS). Что бы этот оператор сработал это GUID надо явно указать для интерфейса через __declspec(uuid()). Это указание закопано глубоко в недрах define'ов, один из которых генерит midl для интерфейсов (из idl файла). #import работает аналогично. Интерфейс же IContextMenu определен не через idl, а отписан руками в хидере shlobj.h, и там этого __declspec нету (иногда у MS бывают на редкость кривые руки COM_INTERFACE_ENTRY_IID получает GUID явно первым параметром |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
xvr, спасибо за разъяснение.
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |