Как изменить подпись CDockablePane

Как я вызываю обновление подпись CDockablePane в пакете функций MFC? Я работаю с примером стиля Visual Studio с вкладками, и я хочу изменить подписи для вкладок.

Они, кажется, кэшируются где-нибудь, хотя, как тогда, когда я изменяюсь от значений по умолчанию, это использует то, на чем использовало приложение, он - предыдущее выполнение. Я ничего не могу найти в реестре, имеющем отношение к этому.

Я изменяю таблицу строк IDS_FILE_VIEW и IDS_CLASS_VIEW для установки новых подписей. Я ступил в CDockablePane:: метод CreateEx и lpszCaption параметр действительно содержат новую подпись, но старая подпись все еще используется.

Новые подписи, кажется, не загружаются, пока область не скрыта и показана снова. Это должно быть подсказкой, но я не могу понять это.

Почему это не будет только использовать то, что я передаю как подпись CreateEx???

6
задан cigarman 22 February 2010 в 19:44
поделиться

2 ответа

В двух словах, это ошибка в пакете функций MFC - фактически в библиотеке BCG Software. Ошибка заключается в том, что вы не можете изменять эти надписи динамически. Их ответ: "Зачем вам это нужно?"

Надписи для панелей с вкладками в прикрепляемой панели хранятся в реестре. Надписи, используемые при создании, НЕ используются, если они уже существуют в реестре.

Таким образом, при первом запуске приложения будут использоваться подписи из таблицы строк. После этого будут использоваться подписи из реестра.

Используя настройки, созданные мастером AppWizard, параметры реестра находятся по адресу:

HKEY_CURRENT_USER\Software\Local AppWizard-Generated Applications\MyApp\Workspace\DockingManager-128\DockingPaneAndPaneDividers

Значение, хранящееся в этом ключе, по сути, является двоичным файлом, который сериализуется в панели при запуске менеджером докинга. Его содержимое не документировано, но вы можете увидеть, что делает код в afxdockablepane.cpp.

Надеюсь, это поможет кому-нибудь еще, кто столкнется с этой проблемой.

6
ответ дан 10 December 2019 в 02:46
поделиться

Хммм, байбе, я неправильно понял, но я просто вызываю SetWindowText для экземпляра CDockablePane. Заголовок меняется на то, что я передаю в 'SetWindowText' ...

2
ответ дан 10 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: