Quando o virtual não funciona

Eu tenho um erro estranho nas minhas aulas de C ++ no momento. Eu tenho uma classe de wrapper ActiveX (como parte do wxWidgets) à qual adicionei uma nova função virtual. Eu tenho outra classe que herda do ActiveX (wxIEHtmlWin), no entanto, a classe ActiveX sempre chama sua própria função em vez da classe no wxIEHtmlWin que a substitui.

Não sei por que isso está acontecendo. Eu fiz a função pura virtual e agora o programa falha quando faz a chamada de função, mas compila bem caso contrário. Existe alguma maneira de desativar funções virtuais ou eu encontrei um bug no Visual Studio?

Classe ActiveX

protected:
virtual FrameSite* getNewFrameSite()=0;

classe wxIEHtmlWin

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

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

Edit: Eu adicionei outra função de teste (retorna um int) e ainda estraga tudo.

Link para o código em questão:http://lodle.net/public/iebrowser.rar

Editar:

OK, graças à resposta abaixo, consegui que funcionasse. O que eu fiz foi criar a classe activex em duas partes (como sugerido), mas no wxIEHtmlWin chamei a segunda parte no código do construtor. Igual a:

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();
}

Agora eu sei por que o wxWidgets suporta construção de duas partes.

questionAnswers(2)

yourAnswerToTheQuestion