Compartilhar via


SHCreateMenuBar

Windows Mobile SupportedWindows Embedded CE Supported

9/9/2008

Essa função cria um menu ou softkey barra, como apropriado, ser associado com uma janela especificada.

Syntax

BOOL SHCreateMenuBar(
  SHMENUBARINFO * pmb
);

Parameters

Return Value

Essa função retorna TRUE se ele for bem-sucedido e FALSE se ele falhar.

Remarks

Para todas as plataformas

Quando o recém-criado barra de menus ou chave flexível, bem-sucedido barra posicionada a inferior da janela especificada.

Um aplicativo deve redimensionar sua janela principal para acomodar o tamanho da barra de menus. O seguinte mostra codificar como para programaticamente determina o tamanho da barra de menus.

hMenuBar = SHFindMenuBar( MyMainWindow);
GetWindowRect(hMenuBar, &MyRect);

Para Mobile Windows

Em Windows Mobile 6, um chave flexível barra será automaticamente criada se a especificação passado para SHCreateMenuBar função contém parte superior 2 ou menor nível esses itens menu menu e não contêm imagens.

Se a especificação passado para SHCreateMenuBar função contém imagens ou parte superior more than 2 nível menu itens, o comportamento é da seguinte maneira.

  • SHCreateMenuBar falhará para Windows Mobile 6 Standard.
  • SHCreateMenuBar Criará um barra de menus estilo tradicional Windows Mobile 6 Professional e Windows Mobile 6 Classic.

Exemplo de código

O seguinte exemplo de código demonstra como usar SHCreateMenuBar.

Observação

Para fazer o seguinte exemplo de código mais fácil de ler, verificação de segurança e manipulação de erro não estão incluídos.Esta exemplo de código não deve ser usado em uma configuração versão a menos que ele foi modificado para incluí-las.

#include <aygshell.h>
extern HINSTANCE g_hInstance;
HWND g_hwndMb;
HMENU g_hMenu;
#define IDM_HELLO_MENU 100
LRESULT CALLBACK SHCreateMenuBarWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static fDisableSK = FALSE;
    switch(message)
    {
        case WM_CREATE:
            {
                SHMENUBARINFO mbi;
                ZeroMemory(&mbi, sizeof(SHMENUBARINFO));
                mbi.cbSize     = sizeof(SHMENUBARINFO);
                mbi.hwndParent = hwnd;
                mbi.nToolBarId = IDM_HELLO_MENU;
                mbi.hInstRes   = g_hInstance;
                mbi.dwFlags    = SHCMBF_HMENU;
                if(SHCreateMenuBar(&mbi))
                {
                    g_hwndMb          = mbi.hwndMB;
                    TBBUTTONINFO tbbi = {0};
                    tbbi.cbSize       = sizeof(tbbi);
                    tbbi.dwMask       = TBIF_LPARAM | TBIF_BYINDEX;
                    SendMessage(g_hwndMb, TB_GETBUTTONINFO,0, (LPARAM)&tbbi);
                    g_hMenu           = (HMENU)tbbi.lParam;
                }
                else
                {
                    DestroyWindow(hwnd);
                    PostQuitMessage(1);
                    return(-1);
                }
                break;
            }
        case WM_KEYDOWN:
            {
                // When the user presses the space key, toggle between full screen and normal mode.
                if (VK_SPACE == wParam)
                {
                    if(fDisableSK)
                    {
                        SHEnableSoftkey(g_hwndMb, /*uid*, 0 for SK1, 1 for SK2*/1, /*bByIndex*/TRUE, TRUE);
                    }
                    else
                    {
                        SHEnableSoftkey(g_hwndMb, /*uid*, 0 for SK1, 1 for SK2*/1, /*bByIndex*/TRUE, FALSE);
                    }
                }
                break;
            }
    }
    return DefWindowProc(hwnd, message, wParam, lParam);
}

Requirements

Header aygshell.h
Library aygshell.lib
Windows Embedded CE Windows CE .NET 4.2 and later
Windows Mobile Pocket PC 2000 and later, Smartphone 2002 and later

See Also

Reference

SHMENUBARINFO