|
5 / 5 / 2
Регистрация: 03.05.2016
Сообщений: 221
|
|
В MFC приложении не загружается положение тулбаров из предыдущей сессии23.07.2022, 12:00. Показов 2789. Ответов 9
Здравствуйте! Досталось в наследство приложение написанное с помощью МFC.
Так же с помощью мастера приложений создал тестовое приложение. Сравниваю эти приложения, вроде одинаково отнаследованы от CWinAppEx (в файлах с именем приложения), но почему то не удаётся загрузить положение тулбаров для старого (полученного от коллеги) приложения. С проблемами записи статуса я разобрался - ранее коллега отключил свойство m_bSaveState = FALSE. Состояние тулбаров я запоминаю в реестре при закрытии приложения (например для тулбара m_MeasurementToolBar) с помощью кода m_MeasurementToolBar.SaveState(_T("SOFTW ARE\\Test1\\Test2\\Workspace\")). Соответственно в файле приложения есть установка ключа SetRegistryKey(_T("Test1")) и SetRegistryBase(_T("Test2")). Сам коллега не может сказать, что делал с приложением (иначе у него бы спросил), после каких изменений перестал загружаться статус тулбаров. Собственно вопрос: как можно загрузить состояние тулбара (его расположение в окне) из реестра, или почему оно может не загружаться?
0
|
|
| 23.07.2022, 12:00 | |
|
Ответы с готовыми решениями:
9
Сохранение положения тулбаров из предыдущей сессии пользователя Удаление предыдущей сессии при открывании приложении во второй вкладке Сохранение положения тулбаров из прошлой сессии |
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,138
|
|
| 23.07.2022, 14:52 | |
|
MaximSergeevith, а сохранённый дамп в реестре от тестового приложения и от боевого - одинаковые ? (конечно, если тестовый набор плашек такой же)
0
|
|
|
5 / 5 / 2
Регистрация: 03.05.2016
Сообщений: 221
|
|
| 23.07.2022, 16:43 [ТС] | |
|
Там разный набор плашек. Какие то коллега создавал сам. На картинках моё приложение - это где Test1 & Test2,
То, что для образца - в папке \MFC\Samples\StateCollection
0
|
|
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,138
|
|
| 23.07.2022, 19:35 | |
|
MaximSergeevith, попробуй "вручную" (с помощью тестовых кнопок) повызывать CWinAppEx::SaveState/CWinAppEx::LoadState
понаблюдай, что появляется в реестре и возвращают ли функции ошибку
0
|
|
|
5 / 5 / 2
Регистрация: 03.05.2016
Сообщений: 221
|
|
| 23.07.2022, 20:27 [ТС] | |
|
В этом то и проблема, есть тулбары (их создавал коллега), при сохранении которых вылетает ошибка сериализации.
Поэтому я хотел сохранять положение тех, что ошибок не вызывают и загружать их координаты из реестра - как это сделать?
0
|
|
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,138
|
||
| 23.07.2022, 20:43 | ||
|
MaximSergeevith, если честно, я не занимался никогда этими сохранениями тулбаров, поэтому точно не смогу подсказать.
Я бы для начала выяснил, что именно глючит. Делаем тестовую GIT ветку проекта. Удаляем половину элементов с тулбаров. Пробуем. И так до выяснения, какой именно элемент вызывает проблему к слову, а GIT-репозиторий проекта не вёлся ? Можно было бы найти коммит, где появился глюк Добавлено через 45 секунд
0
|
||
|
5 / 5 / 2
Регистрация: 03.05.2016
Сообщений: 221
|
|||||||||||||||||||||||||||||||
| 24.07.2022, 01:07 [ТС] | |||||||||||||||||||||||||||||||
|
Git репозиторий - 13 лет назад таких слов эти люди не слышали
Проект архивироваться начал после глобальных правок в приложении.Что именно глючит - причина в том, как эти тулары создаются, с этим ещё разбираться надо, но кое какие скользкие места я выявил непример в следующем:
Далее один из тулбаров при создании использует код
В MainFrame.h добавить:
да и вообще это скорее костыль и надо переписывать код который участвует при создании и загрузке тулбаров
0
|
|||||||||||||||||||||||||||||||
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,138
|
|||||||
| 24.07.2022, 01:21 | |||||||
|
Добавлено через 2 минуты проще вот так
а ещё проще вообще удалить эту функцию, поскольку она просто перевызывает функцию предка
0
|
|||||||
|
5 / 5 / 2
Регистрация: 03.05.2016
Сообщений: 221
|
|
| 24.07.2022, 02:38 [ТС] | |
|
Да есть там return - просто я код сократил.
После вызова функции предка будет ошибка дальше. Как уже писал надо разбираться с этими кастомными функциями Добавлено через 26 минут Сейчас у меня такая проблема - тулбары после восстановления сессии не устанавливаются на одной линии. Т.е. перед закрытием приложения я поставил их в одну линии, открываю приложение - по вертикали они стоят как было перед закрытием, по горизонтали - на разных линиях (друг под другом). Как с этим быть?
0
|
|
|
5 / 5 / 2
Регистрация: 03.05.2016
Сообщений: 221
|
|
| 24.07.2022, 11:08 [ТС] | |
|
Вернее не так - положение по оси Х у них такое как перед закрытием, а по оси У они размещаются на разных уровнях (полках)
0
|
|
| 24.07.2022, 11:08 | |
|
Помогаю со студенческими работами здесь
10
Восстановление предыдущей сессии в Firefox Уничтожение предыдущей сессии WCF доступ к значениям предыдущей сессии в DLL Вычисление идет с данными из предыдущей сессии Восстановление предыдущей сессии в Mozilla Firefox Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|