なんか自己解決しちゃったからアレだけど擬似コード
http://www1.axfc.net/uploader/Sc/so/122025
VC++使ってるならコンパイル通るんじゃね・・・

ちなみに、固有IDで識別してswitchとかifで動作を分けるって実装はアリだけど、
可読性とバグり場所の割り出しが比較的大変になるからあんまオススメはしない。