::LoadMenu() и GetMenu()
От: gugle  
Дата: 09.07.03 10:14
Оценка:
Добрового времени суток.
У меня следующая проблемма.
хочу просто при каком либа событии устанавливать/снимать в меню для трея галочку.
Дык, только вот не хочет:


...
    // TODO: Add your command handler code here
    //HMENU hMenu = ::GetMenu(m_hWnd) // ::1
    HMENU hMenu = ::LoadMenu(theApp.m_hInstance, MAKEINTRESOURCE(IDR_MENU1)); //здесь не ноль
    HMENU hPopup = ::GetSubMenu(hMenu, 0); //здесь тоже не ноль

    UINT uCheck = ::GetMenuState(hPopup, ID_MMENU_MM1, 0); //всегда=0
    if( uCheck & MF_CHECKED )
        ::CheckMenuItem( hPopup, ID_MMENU_MM1, MF_UNCHECKED );
    else
        ::CheckMenuItem( hPopup, ID_MMENU_MM1, MF_CHECKED );
...


Причем, если запихнуть Popup Menu в главное, и убрать комментарий с ::1 да поставить коммент. на строку ниже, то все ОК!
С уважением,
GU Glez [Джи Ю Глиз]
Re: ::LoadMenu() и GetMenu()
От: Patalog Россия  
Дата: 09.07.03 13:54
Оценка: 2 (1)
Здравствуйте, gugle, Вы писали:

[]

G>

G>...
G>    // TODO: Add your command handler code here
G>    //HMENU hMenu = ::GetMenu(m_hWnd) // ::1
G>    HMENU hMenu = ::LoadMenu(theApp.m_hInstance, MAKEINTRESOURCE(IDR_MENU1)); //здесь не ноль
G>    HMENU hPopup = ::GetSubMenu(hMenu, 0); //здесь тоже не ноль

G>    UINT uCheck = ::GetMenuState(hPopup, ID_MMENU_MM1, 0); //всегда=0
G>    if( uCheck & MF_CHECKED )
G>        ::CheckMenuItem( hPopup, ID_MMENU_MM1, MF_UNCHECKED );
G>    else
G>        ::CheckMenuItem( hPopup, ID_MMENU_MM1, MF_CHECKED );
G>...
G>


G>Причем, если запихнуть Popup Menu в главное, и убрать комментарий с ::1 да поставить коммент. на строку ниже, то все ОК!


Хм, а чего же ты хотел то?
LoadMenu на то дана, чтобы загрузить "новое" меню, т.е. HMENU который она тебе вернула, никоим образом не относиться к тому меню,
которое уже есть у окна (GetMenu) и соответ. "//всегда=0".
Думается тебе поможет EnumThreadWindows + GetMenu
Почетный кавалер ордена Совка.
Re[2]: ::LoadMenu() и GetMenu()
От: gugle  
Дата: 09.07.03 14:03
Оценка:
Здравствуйте, Patalog, Вы писали:

P>Здравствуйте, gugle, Вы писали:


G> []



P>Хм, а чего же ты хотел то?

P>LoadMenu на то дана, чтобы загрузить "новое" меню, т.е. HMENU который она тебе вернула, никоим образом не относиться к тому меню,
P>которое уже есть у окна (GetMenu) и соответ. "//всегда=0".
P>Думается тебе поможет EnumThreadWindows + GetMenu

Спасибо!
С уважением,
GU Glez [Джи Ю Глиз]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.