【GoF】デザインパターン5
■ このスレッドは過去ログ倉庫に格納されています
0477428
2005/07/05(火) 13:45:00うわ、勝手に解決してる。('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のパクリですが。
■ このスレッドは過去ログ倉庫に格納されています