Это должно легко попробовать, если вы выполняете в процессе и нити окна вы хотите заменить. Если вы не работаете с процессом и потоком исходного окна, это гораздо менее вероятно работает. Если это часть оболочки Windows, которую вы пытаетесь заменить, то очень вряд ли вы это заработаете.
Если вы можете сделать замену окна, вам нужно будет ответить на родительское окно так, чтобы оно ожидало, что исходное дочернее окно будет отвечать, но, возможно, вы уже об этом подумали.
Если родительское окно удерживает дескриптор окна исходного ребенка, ваша попытка заменить его просто не сработает (она все равно попытается поговорить с оригинальным дескриптором). но если он отслеживает ребенка по id, то все, что вам нужно сделать, это дать вашему окну одинаковый идентификатор окна и использовать SetWindowPos, чтобы придать ему тот же размер и местоположение и z-порядок, что и исходный ребенок, а затем уничтожить оригинальный ребенок.
Желаю вам удачи, это поведение с высоким риском, но все остальные хаки, которые вы могли бы попробовать, вместо подкласса и подключения.