etc.negui.event.subclass

サブクラス化。
特定のお約束コードが必要。
Examples:
 class SubClassPush: Push, ISubClass {
 	private static extern(Windows) LRESULT SubClass_Proc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) {
		alias EVENTS!(typeof(this)) EVENTLOOP;

 		mixin(EVENTLOOP.WM_TOP());
 		switch(Message) {
 			case WM_DESTROY:
 				mixin(EVENTLOOP.WM_DESTROY());
 			default:
 				mixin(EVENTLOOP.WM_LAST());
 		}
 		assert(false);
 	}
 	mixin(SMixInSubClass);

 	this(NeGui Owner, ITEM_ID Id) {
 		super(Owner, Id);
 		SubClassOnNeGuiConstructor();
 	}

 	protected override {
 		void OnDestroy() {
 			SubClassOnNeGuiDestructor();
 			super.OnDestroy();
 		}
 	}
 }
class SubClass: etc.negui.system.raii.Raii, etc.negui.system.controller.IController;
サブクラス化情報保持クラス。
このクラスをそのまま使うんじゃなくてISubClassとSMixInSubClassを組み合わせて使用。
const WNDPROC subProc();

protected void Kill();

this(NeGui gui , WNDPROC SubProc );

bool start();

bool stop();

const bool isRunning();

LRESULT call(HWND hWnd , UINT Message , WPARAM wParam , LPARAM lParam );

abstract interface ISubClass;
サブクラス化を実装するNeGuiが持っとくべきもの。
サブクラス化のサブクラス化に対処するためprivateで実装。 非privateのときにstack overflowに。
privateでinterfaceって規格的にどうなんだろう。
string SMixInSubClass(in string SubclassObject = "SubclassObject ", in string SubClass_Proc = "SubClass_Proc ");
History:
1.100: [S] 名前変更(TSubClass -> SMixInSubClass)。