А что на счет варианта, когда есть только один кастомный класс окна и при else if(message == WM_COMMAND) в зависимости от значения LOWORD(wparam) вызывается обычная соответствующая функция(за счет массива указателей на функции) и уже в них реализован функционал доп окон, только они все создают в основном?