SHCreateMenuBar
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
- pmb
[no] Ponteiro para uma estrutura SHMENUBARINFO.
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 |