>>476
うわ、勝手に解決してる。('A`)

自分も最初そう思いましたが、
factory->createButton() の返すインスタンスが WIN32_Button または X_Button で、
これらは UserButton の継承としては実装できないのですよ。

UserButton : public Button は処理を Button のインスタンスに委譲しますが、
WIN32_Button : public Button は処理を WIN32_WindowImp (HWNDを保持したモノ) のインスタンスに委譲してます。

ここではボタンを例に出しましたが、実際のところはボタンを
継承でカスタマイズすることはほとんど無いです。

Button* button=getFactory()->createButton(parent,rc);
button->addListener(listener);

実際のところは主にオーバーラップウィンドウをカスタマイズするのに使ってます。

class MyWindow : public UserSimpleWindow, public CommandListener{
 Button* button;
public:
 MyWindow(parent,rc) : UserSimpleWindow(parent,rc){
  button=getFactory()->createButton(parent,rc);
  button->addListener(this);
 }
 virtual bool onCommand(wnd){ //CommandListenerのインターフェース
  messageBox("pushed"); return true;
 }
};

この例ではメソッドのオーバーライドしてないけど、
イベントハンドラを継承したウィンドウを作りたいときに便利っす。ぶっちゃけJavaのパクリですが。