Форум программистов, компьютерный форум CyberForum.ru

Замена 2х меню в MDI приложении - C++

Восстановить пароль Регистрация
 
Tvagapov
Сообщений: n/a
12.06.2011, 20:38     Замена 2х меню в MDI приложении #1
Уважаемые коллеги, помогите разобратья. Я занимаюсь руссификацией MDI приложения, все ресурсы подгружаю из dll. Встала задача переключиться на русские меню, а их 2 штуки. Одно (IDR_MAINFRAME) отображается, когда документ не загружен, а другое (IDR_DOCMENU), когда документ загружен. Переключение между языками выполняется из меню документа (т.е. активно IDR_DOCMENU). Обработчик находится в CMainFrame::SetLanguage(). В нем я подгружаю dll с русскими ресурсами и далее выполняю такие деиствия:

CMainFrame::SetLanguage()
{
...
CMenu *pMenuCurrent = GetMenu();

m_pMenuNew = new CMenu; //(переменная класса m_pMenuNew, определена как CMenu *m_pMenuNew
)

pMenuCurrent->DestroyMenu(); // 1
delete pMenuCurrent;

m_pMenuNew->LoadMenu(IDR_DOCMENU);
SetMenu(m_pMenuNew);
...
}

Меню документа изначально загружается в InitInstance():

BOOL CAppApp::InitInstance()
{
...
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_DOCMENU,
RUNTIME_CLASS(CAppDoc),
RUNTIME_CLASS(CMDIChildWnd), // standard MDI child frame
RUNTIME_CLASS(CAppView));
AddDocTemplate(pDocTemplate);
...
}

Но,
если я уничтожаю меню pMenuCurrent->DestroyMenu(); (в строке с комментом // 1), то при переключении срабатывает ASSERT:
ASSERT(m_hMenuShared == NULL || ::IsMenu(m_hMenuShared)); в файле Winmdi.cpp.
Если меню не уничтожать, то нормально загружается русское меню (IDR_DOCMENU). Но при закрытии документа отображается английское меню (IDR_MAINFRAME).

Если же первоначально загрузить меню IDR_MAINFRAME, то уже никак не попадешь в меню документа.

В результате я понимаю, что надо каким-то образом уничтожить 2 существующих меню и как-то загружить их русские версии, но где именно, и каким образом это правильно сделать не знаю. Подскажите, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2011, 20:38     Замена 2х меню в MDI приложении
Посмотрите здесь:

Литература по MDI приложениям C++
Windows Explorer на VC++ (MDI?) C++
MDI-приложение, аналогичное Microsoft Word C++
C++ Возврат назад в главное меню из подпункта меню
mdi в win32 api C++
Как сделать MDI окна залипающими ? C++
Разработать программу, в которой будет организовано меню, выбор функций меню C++
C++ Меню в консольном приложении

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 12:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru