Это, конечно, намного проще, если вы используете MFC или ATL, но это можно сделать без.
Создайте тип, который реализует IDispatch и который отвечает как минимум на DISPID_NavigateComplete, затем зарегистрируйте экземпляр этого типа с помощьюуправление через веб-браузер с использованием механизма точки подключения (вам нужно указать точку подключения для DWebBrowserEvents).Обратите внимание, что поскольку DWebBrowserEvents является интерфейсом, вам не нужно реализовывать все члены, просто верните DISP_E_UNKNOWNNAME из GetIDsofNames для любого не реализованного члена.