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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Получение из другой формы ТStringList http://www.cyberforum.ru/cpp-beginners/thread496193.html
Не знаю куда это больше подходит, но появилась необходимость из Form2 получить доступ к ТStringList *myList = new ТStringList(); находящемуся в Form1. Есть ли какая то простая возможность это сделать?
C++ Как мне вызвать GetGuiResources в консольном приложении VS6? Приветствую! Подскажите плиз, как мне вызвать GetGuiResources в консольном приложении VS6. Код: #include <windows.h> #include <winuser.h> HWND hWnd; DWORD dwProcID; HANDLE hProcess; DWORD dwGDI; http://www.cyberforum.ru/cpp-beginners/thread496060.html
Открылись вакансии в крупную иностранную компанию C++
Крупная иностранная компания, занимающаяся продвижением на Интернет-рынок виртуальных казино, с возможностями карьерного роса, приглашает сотрудников на следующие вакансии: 1.UNIX-разработчик (UNIX Team Leader). Требования: 1.муж/жен от 23 до 45 лет; 2.высшее техническое образование; 3.опыт работы по программированию на C++ под UNIX от 3 лет; 4.глубокое знание С++, FreeBsd; 5.опыт...
Шаблон set и структура - как вместе? C++
Что-то торможу. typedef set<Node> NodeSet; struct Node{ NodeSet input; NodeSet output; }Как это сделать? Ставлю перед typedef - struct Node; - нифига.
C++ Прикрепление главного окна к границе экрана http://www.cyberforum.ru/cpp-beginners/thread495909.html
Подскажите, как с использованием MFC прикрепить главное окно приложения к границе экрана. На Borland это делается просто, свойство Align у формы. А вот для MFC я что-то не могу найти :-(
C++ Access violation при использовании файла в lib библиотеке Привет Всем. Компилятор BCB 5.01, WinXP. У меня возникла следующая проблема: Есть функция в файле f1.cpp: #include <string> #include <sstream> std::string function() подробнее

Показать сообщение отдельно
Tvagapov
Сообщений: n/a

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

12.06.2011, 20:38. Просмотров 796. Ответов 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 существующих меню и как-то загружить их русские версии, но где именно, и каким образом это правильно сделать не знаю. Подскажите, пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru