Уродливая часть будет получать события. Непосредственное кодирование COM-интерфейса MSHTML в C ++ для присоединения логики к HTML-интерфейсу HTML будет довольно уродливым, если вы сделаете это «сырым». Вы, вероятно, захотите, чтобы тонкий слой библиотечного кода находился между логикой приложения и HSHTML, чтобы скрыть падение, связанное с COM.
В конечном счете, это переосмысление таких вещей, как XUL в Firefox - см. http://en.wikipedia.org/wiki/XUL.. Возможно, вы найдете это более готовым для использования таким образом. Вы бы использовали движок Gecko вместо MSHTML.
Или вы можете использовать WPF, что опять-таки очень похоже. Учитывая, что вы работаете в Windows (так как вы довольны зависимостью от MSHTML), вы можете написать материал с графическим интерфейсом на C # и связать его с кодом C ++, представив это с помощью C ++ / CLI.