Я думаю, это потому, что ошибка заставляет его предположить, что любой текст, подаваемый в CMFCEditBrowseCtrl, использует кодировку символов Unicode.Поэтому старые проекты, которые часто используют ASCII (кодировка символов = «Не установлено» или просто пустые в настройках проекта), потерпят неудачу.
Я сейчас испытываю то же поведение и могу обойти это с помощью кодакак это: ctrl.SetWindowText((LPTSTR)(LPCWSTR)CStringW(strvar));
Это заставляет строку Юникода в элементе управления, и текст внезапно отображается правильно.
Однако я получаю ошибку повреждения кучи при сборке мусора.Я предполагаю, что это потому, что теперь он пытается освободить эту строку, возможно, как ASCII, а не Unicode, на этот раз.
Так что я не уверен, что здесь можно выиграть, кроме конвертации вашего проекта в Unicode.Что, вероятно, отнимает много времени для старого большого проекта.
Обновление: Вот информация об этом из Microsoft Connect: Ошибка 641662 .Очевидно, это поведение соответствует дизайну, поскольку COMCTL v6 доступен только для Unicode, а это элемент управления COMCTL v6.