Cuando lo virtual no funciona

Tengo un error extraño en mis clases de C ++ en este momento. Tengo una clase de contenedor ActiveX (como parte de wxWidgets) a la que agregué una nueva función virtual. Tengo otra clase que hereda de la ActiveX (wxIEHtmlWin), sin embargo, la clase ActiveX siempre llama a su propia función en lugar de la de wxIEHtmlWin que la anula.

No puedo entender por qué sucede esto. Hice la función puramente virtual y ahora el programa se bloquea cuando realiza la llamada a la función pero de lo contrario se compila bien. ¿Hay alguna forma de deshabilitar las funciones virtuales o he encontrado un error en Visual Studio?

Clase ActiveX

protected:
virtual FrameSite* getNewFrameSite()=0;

clase wxIEHtmlWin

class wxIEHtmlWin : public wxActiveX
{
protected:
    FrameSite* getNewFrameSite();
}

FrameSite* wxIEHtmlWin::getNewFrameSite()
{
    return new gcFrameSite(this);
}

Editar: agregué otra función de prueba (devuelve un int) y todavía la arruino.

Enlace al código en cuestión:http://lodle.net/public/iebrowser.rar

Editar:

OK, gracias a la respuesta a continuación, lo hice funcionar. Lo que hice fue crear la clase activex en dos partes (como se sugiere), sin embargo, en wxIEHtmlWin llamé a la segunda parte en el código del constructor. Al igual que:

wxIEHtmlWin::wxIEHtmlWin(wxWindow * parent, wxWindowID id, const wxPoint& pos,const wxSize& size,long style, const wxString& name) : wxActiveX()
{
    wxActiveX::Create(parent, PROGID, id, pos, size, style, name);
    SetupBrowser();
}

Ahora sé por qué wxWidgets admite la construcción en dos partes.

Respuestas a la pregunta(2)

Su respuesta a la pregunta