Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 2

Динамическое изменение текста в меню диалога (MFC)

11.01.2013, 23:49. Показов 4282. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Столкнулся с такой проблемой: делаю динамическую смену текста в диалоговом окне путем чтения строк из ini файлов, примерно так, как описано здесь. Но суть в том, что при смене названий пунктов меню и вкладок в СTabControl - текст не меняется, пока по меню не проведешь мышкой, не нажмешь какую-либо кнопку, либо не перетащишь часть окна за край рабочего стола. В приложенном файле постарался примерно продемонстрировать этот эффект. При смене обычного текста (CStatic) все нормально.
Вот часть кода функции, работающей по нажатию на кнопку подменю, которым меняю текст в диалоге. Функция устанавливает русский язык:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
CMenu* Menu;
    CMenu* submenu;
    Menu = GetMenu();
    submenu = Menu->GetSubMenu(1);
 
    char *sText[] =                                                     
    {
        "Загрузить файл конфигурации",         //0
        "Сохранить файл конфигурации",         //1
        "Сохранить файл конфигурации как...",           //2
        "Выход",                           //3
        "Английский",                     //4
        "Русский",                           //5
        "О программе",                        //6
        "Файл",                         //7
        "Настройки",                       //8
        "Язык"                          //9
    };
    static unsigned short nMenu[] = 
    {
        ID_LOAD_CONFIG, 0,
        ID_SAVE_CONFIG, 1,
        ID_SAVE_CONFIG_AS, 2,
        ID_EXIT, 3,
        ID_LANGUAGE_ENGLISH, 4,
        ID_LANGUAGE_RUSSIAN, 5,
        MY_ABOUT_BTN, 6
    };
 
    for (int i = 0; i < (sizeof(nMenu) / sizeof(unsigned short)); i += 2)       //тут меняются подпункты меню
            Menu->ModifyMenuA(nMenu[i], MF_BYCOMMAND | MF_STRING, nMenu[i],(LPCTSTR)sText[nMenu[i + 1]]);
 
    static unsigned short nItems[] = {7, 8};          //тут меняются верхние пункты меню
        for (int i = 0; i < (sizeof(nItems) / sizeof(unsigned short)); i++)
                Menu->ModifyMenu(i, MF_BYPOSITION | MF_STRING, 0, (LPCTSTR)sText[nItems[i]]);
    
    submenu->ModifyMenuA(0, MF_BYPOSITION | MF_STRING, 0, (LPCTSTR)sText[9]);
    submenu->CheckMenuItem(ID_LANGUAGE_RUSSIAN, MF_CHECKED);
    submenu->CheckMenuItem(ID_LANGUAGE_ENGLISH, MF_UNCHECKED);
Каким методом можно устранить этот недостаток? Что нужно добавить в код?

В MFC, да и вообще в C++ я новичок, так что прошу прощения, если вопрос дурацкий
Изображения
 
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.01.2013, 23:49
Ответы с готовыми решениями:

Изменение текста на кнопке стандартного диалога сохранения
Добрый день. Скажите, пожалуйста, можно ли в диалоговом окне Microsoft.Win32.SaveFileDialog как-нибудь изменить текст на кнопке...

Динамическое изменение меню
Есть dataGridView + contextMenuStrip c 3-мя пунктами для изменения, добавления и удаления записей. Можно ли сделать так: если есть...

Динамическое изменение текста
Есть такая задачка, помогите пожалуйста. Два текста наложенные друг на друга, по очереди становятся видимые.

2
16 / 16 / 5
Регистрация: 26.09.2012
Сообщений: 70
12.01.2013, 11:53
попробуйте updatedata
http://msdn.microsoft.com/en-u... s.80).aspx
0
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 2
12.01.2013, 15:20  [ТС]
Цитата Сообщение от suff1x Посмотреть сообщение
попробуйте updatedata
http://msdn.microsoft.com/en-u... s.80).aspx
Попробовал добавить UpdateData в конце приведенного выше кода, результатов не принесло

Добавлено через 13 минут
Проблема решена. Просто добавил SetMenu(Menu); в конце кода и все заработало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.01.2013, 15:20
Помогаю со студенческими работами здесь

Динамическое изменение текста в TextView
Есть TextView в RelativeLayout, которое вмещает в себя надпись &quot;Привет мир&quot;, а вот надпись &quot;Привет весь мир&quot; уже не влезает. ...

win32 Динамическое изменение текста элемента Static Text
Вопрос следующий. Как мне изменить текст (Заголовок - Caption) метки динамически? Пробую это сделать BOOL WINAPI SetDlgItemText( __in...

Динамическое изменение текста в label1 с помошью timer1, который опирается на позицию проигрывания аудиофайла
Динамическое изменение текста в label1 с помошью timer1, который опирается на позицию проигрывания аудиофайла. Вообщем надо чтобы...

Смена цвета диалога (MFC)
и снова я! нужно чтоб на нажатие одной кнопки диалог мигал одним цветом (2-3 раза поменять цвет с основным цветом), а на другой кнопке...

Кнопка диалога в Ribbon (MFC)
Здравствуйте! Я использую Visual Studio 2010 Professional. Знакомлюсь с разработкой программ с Ribbon на MFC. Всё уже пролазил и не могу...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru