H выдает его, в этом случае код библиотеки создал отдельный тип, чтобы дать вам немного больше безопасности типов (во времена старых API C).
На самом деле они оба - РУЧКИ, то есть объект ядра, который на самом деле не заботится о том, что это за ресурс, просто у вас есть «дескриптор» к нему. Помните, что API - это язык C, поэтому используйте приведения в стиле C, а когда вы собираетесь его удалить, используйте DeleteObject ().
edit: 64 бита, да ... проблема в том, что MS обновила дескрипторы до 64-битных, но оставила OLE-компоненты в покое. К счастью, все, что они сделали, это добавили дополнительные биты в нули.
Попробуйте использовать процедуры преобразования LongToHandle и посмотрите руководство по переносу MIDL - прокрутите примерно наполовину до раздела "USER и GDI - это знаковые расширенные значения 32b".