On line 172 why is it wxNotebookEvent? Shouldn't it be wxFlatNotebookEvent?
void OnPageChanged(wxNotebookEvent& event);
Strictly, yes. This is a relict from the old days.
However, it does not really matter, it works just fine, and the object is not even used.