Ir ao conteúdo
  • Cadastre-se

[C\C++ 11 - win32] - como obter os eventos de entrada e saída nos items dos menus?


Cambalinho

Posts recomendados

preciso de ajuda em varios aspectos que me deixam mais confuso do que o inglês no MSDN :(

disseram-me que a mensagem WM_MENUSELECT, verifica o movimento do rato entre os items do menu(bom para verificar as entradas e saídas entre items): http://msdn.microsoft.com/en-us/library/windows/desktop/ms646352%28v=vs.85%29.aspx

 

- o LOWORD(wparam) da-me o index\posiçao do item do menu;

- o HIWORD(wparam) da-me as propriedades do item do menu;

- lparam da-me o handle do menu. onde foi clicado.

 

juntando esta informaçao e WM_INITMENUPOPUP: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646347%28v=vs.85%29.aspx

 

- wparam da-me o handle do menu item ou do menu popup;

- LOWORD(lparam) da-me a posiçao do item;

- HIWORD(lparam) indica-me se o menu é ou nao 1 popup(nao sei bem traduzir o popup, aceito correçao);

 

fiz este codigo:

case WM_MENUSELECT:                {                    HMENU menuhandle2=(HMENU)lParam;                    int menu=LOWORD(wParam);                    if(HIWORD(wParam) & MF_HILITE & !MF_POPUP)                    {                        if(menuitem!=-1)                        {                            MENUITEMINFO menuInfo;                            menuInfo.cbSize = sizeof(MENUITEMINFO);                            menuInfo.fMask=MIIM_DATA;                            GetMenuItemInfo((HMENU)lParam,menuitem, true, &menuInfo );                            Menu *mMenu = (Menu *) menuInfo.dwItemData;                            if (mMenu!=NULL)                            {                                mMenu->Leave();                            }                        }                        //SetWindowText(HandleWindow,to_string(GetLastError()).c_str());                        MENUITEMINFO menuInfo;                        menuInfo.cbSize = sizeof(MENUITEMINFO);                        menuInfo.fMask=MIIM_DATA;                        GetMenuItemInfo((HMENU)lParam,menuitem, true, &menuInfo );                        Menu *mMenu = (Menu *) menuInfo.dwItemData;                        if (mMenu!=NULL)                        {                            mMenu->Enter();                        }                    }                    return 0;                }                break;                case WM_INITMENUPOPUP:                {                    menuhandle=(HMENU)wParam;                    return 0;                }                break;

eu devo ter interpretado alguma coisa mal :(

porque ainda me dá erros :(

alguem me pode explicar onde me enganei e como interpretei mal o MSDN?

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...