Для начала найдем окно при помощи функции FindWindowEx.
По какому событию это надо делать?
Как функция вернет указатель на окно можно воспользовоться функцией GetWindowParent (могу ошибаться). Если метод не вернет указетель значит это главное окно.
MessageBox можно вызывать как с указанием родительского окна, так и без такового. И что тогда?
Если есть то тогда убиваешь его при помощи Postmessage или SendMessage.
Ну, а дальше? Ведь надо ПОДМЕНИТЬ его на своё, причём с возвращением в точку вызова, а иначе зачем это нужно.