Итак, я пишу программу Win32 на простом C, и она использует Direct2D для рисования. До сих пор все получилось хорошо, учитывая, что это мой первый крупный эксперимент с COM. Теперь я перейду к использованию DirectWrite для рендеринга шрифтов, но, похоже, есть дорожный блок. Хотя Direct2D и большинство других COM-объектов имеют отдельные интерфейсы, написанные для C и C++, DirectWrite имеет только интерфейсы C++ в заголовках Windows SDK. Я не знаю, является ли это надзором или целенаправленным решением, но похоже, что он должен хорошо работать на C, если ему будут предоставлены соответствующие C-дружественные заголовки. Я полагаю, что если я напишу свой собственный заголовок для DirectWrite, я должен быть в порядке.Проблемы с DirectWrite в plain C
Таким образом, это заставляет меня ответить на вопрос: как сделать код C++ для COM-интерфейса и преобразовать его в C-дружественный код? Я никогда не создавал COM-интерфейс сам, поэтому я не знаю, как написать для него собственный заголовок DirectWrite. Я попытался взглянуть на заголовки интерфейса C и C++ для Direct2D бок о бок для сравнения, но немного круто обернуть голову. Спасибо, ребята!
Microsoft приняла решение лет назад, что Windows API не является C больше, а C++. И ни Direct2D, ни DirectWrite не являются реальным COM-интерфейсом COM API. – Lothar