>>44
dynamic_castは失敗したらNULLを返す

if ( TMenuItem* menuitem = dynamic_cast<TMenuItem*>(Sender) ) {
 //なんかする
} else {
 //失敗したぞゴラァ
}

ただし参照にキャストするときは失敗すると例外を投げてくるので
try and catchで。