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

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

11.01.2013, 23:49. Показов 4262. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru