Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Изменение текста меню


Автор: Kirgston 9.4.2011, 18:02
Доброго времени суток! Пытаюсь сменить текст меню:

Код

            MENUITEMINFOA mii = {};
            mii.cbSize = sizeof mii;
            mii.dwTypeData = "123";
            mii.fMask = MIIM_TYPE;
            mii.fType = MFT_STRING;
            SetMenuItemInfoA(hMenu, ID_40001, false, &mii);


Но ничего не происходит. Меню рисовал через Dialog API

Автор: Dem_max 9.4.2011, 19:02
когда рисуешь свое меню, текст рисуешь через DrawText

Автор: Kirgston 9.4.2011, 19:44
А если мне понадобится изменить названия меню уже во время работы программы?

А вообще я просто использовал редактор ресурсов + LoadMenu & SetMenu

Автор: Dem_max 10.4.2011, 04:40
если стандартными средствами API то 
RemoveMenu() + InsertMenuItem()

А если сам рисуешь, то сам и все перерисовываешь

Автор: GremlinProg 10.4.2011, 20:08
1. а не поможет, если cch выставить в 3?
2. а иногда и DrawMenuBar помогает

Автор: Kirgston 13.4.2011, 08:18
Пардон за столь долгий ответ


Dem_max, да, но я же говорю что я делал не в ручную а через редактор ресурсов. Если создать форму с ресурсов то там и по другому обращаться надо... может тут так же?


GremlinProg, 


1. неа :(

2. Тоже нет. Ведь оно уже прорисовано.

Блин. Вот вожусь и ничего не помогает ... :((

Автор: GremlinProg 13.4.2011, 13:09
Цитата(Kirgston @  13.4.2011,  10:18 Найти цитируемый пост)
2. Тоже нет. Ведь оно уже прорисовано.

ну так какой ответ-то?
- "нет"
или
- "не проверял"
?

просто название метода DrawMenuBar не очень отражает его суть,
а суть в том, что он скорее обновляет некую внутреннюю структуру меню чем его рисует, да и по документации, положено:
Цитата(DrawMenuBar Function @ MSDN)

If the menu bar changes after the system has created the window, this function must be called to draw the changed menu bar.

Автор: Kirgston 13.4.2011, 17:18
Ответ : "нет" =) ибо проверил прежде чем писать   smile 

Есть вариант "написать ручками всё с 0" . Правда хочу с этим "непониманием" разобраться. Да и коду оно сократит в разы. 

Автор: jimbo 13.4.2011, 18:43
Код

ModifyMenu(hmenu,ID_MENU_EDIT,MF_STRING,ID_MENU_EDIT,"Редактировать");


может так?

Автор: Kirgston 18.4.2011, 20:01
Цитата(jimbo @  13.4.2011,  18:43 Найти цитируемый пост)
может так? 

Странно но помогло

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)