CWinApp::LoadIconはUINTもオーバーロードしてるからIDだけでも失敗しないと思うんだけど、
根本的な問題はCImageList image_list;がローカルにあるのでスコープを抜けると破棄されること。