Это вопрос продолжительности хранения.Используя MFC, цель CButton состоит в том, чтобы пользователь мог щелкнуть по нему, что генерирует событие, которое вы затем можете обработать.Все это указывает на то, что время жизни CButton должно превышать время жизни функции, которая его создает.В типичном диалоговом классе MFC (CDialog) CButton является переменной-членом, поэтому его время жизни - это время жизни экземпляра класса.Если вместо этого вы объявите переменную CButton в конструкторе, она выйдет из области видимости и будет уничтожена после завершения работы конструктора.
В некоторых необычных ситуациях вам может потребоваться создать кнопки на основе решения, неизвестного до выполнения.-время.В этом случае, приведенный выше комментарий о неиспользовании голого «нового» важен.Используйте умный указатель (или контейнер умных указателей), чтобы удерживать созданный CButton *, чтобы он автоматически очищался.Эти умные указатели, или контейнер, должны быть созданы в области видимости класса.