Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tvagapov
0 / 0 / 0
Регистрация: 09.06.2011
Сообщений: 1
#1

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

12.06.2011, 20:38. Просмотров 810. Ответов 0
Метки нет (Все метки)

Уважаемые коллеги, помогите разобратья. Я занимаюсь руссификацией 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 существующих меню и как-то загружить их русские версии, но где именно, и каким образом это правильно сделать не знаю. Подскажите, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2011, 20:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Замена 2х меню в MDI приложении (C++):

Меню в консольном приложении - C++
есть ошибки не могу исправить #include <iostream> #include <iomanip> #include <ctime> #include <cstdlib> using namespace std; ...

Создание меню в консольном приложении - C++
Здравствуйте! Нужно создать меню. Каждый пункт в меню - программа, т.е. в меню можно выбирать какую программу запустить. Подскажите...

Затемнение в MDI приложении - C++ Builder
Доброго дня! Искал недавно варианты затемнения формы со всеми компонентами с отображением прогрессбара в процессе выполнения каких либо...

MainMenu в MDI-приложении - Delphi
В новом проекте, создаю 3 формы. Затем на каждую из них кидаю компонент MainMenu.После задаю в нём пункты. Запускаю, как видно, всё...

Окна в MDI приложении. - C#
Несколько вопросов в приложении MDI есть несколько child окон. 1) Надо сделать чтобы одно из них всегда было выше других (не...

CTreeView в MDI приложении. - Visual C++
Доброе утро. Вообще в работе дел с MFC как правило не имею,чаще Win API ,системное. А тут вдруг попалась следующая задачка ,время...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2011, 20:38
Привет! Вот еще темы с ответами:

DBLookupComboBox в MDI приложении - Delphi
Здравствуйте! Создаю простую базу данных в виде MDI приложении. Есть дочернее окно с таблице в которой список товаров. Три колонки...

Баг в MDI приложении - C++ Builder
Создал MDI-приложение. Положил на дочернюю форму ValueListEditor... После запуска, если щелкнуть по левой кнопке мыши в область этого...

Позиция виджетов в MDI приложении - C++ Qt
Здравствуйте! У меня есть mdi приложение в котором есть 3 виджета. И мне нужно, что бы виджет 1 всегда был поверх виджета 2, но если...

Открытие файлов в MDI приложении - Delphi
Сделал многооконный текстовый редактор. Остался недоделанным пункт открытия текста в отдельном дочернем окне. Открываться они должны при...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.