Compartilhar via


Creating a Toolbar

Windows Mobile Not SupportedWindows Embedded CE Supported

9/9/2008

Uma barra de ferramentas é um controle que contém botões. Os botões um barra de ferramentas geralmente corresponder a itens no menu de aplicativo e fornecer um rápido maneira para um usuário para acessar esses comandos. Botões da barra de ferramentas são imagens bit e não janelas filho, assim como outros botões. Quando um usuário toques um botão da barra de ferramentas, a barra de ferramentas envia seu janela pai uma mensagem WM_COMMAND que contém a identificador do comando do botão.

Cada botão em uma barra de ferramentas pode incluir um imagem de bitmap. Uma barra de ferramentas mantém uma lista interna que contém todos os bitmaps que são atribuídos a cada um dos seus botões barra de ferramentas. Quando você chamar o CreateToolbarEx função, você especificar um bitmap monocromático ou cor que contém as imagens iniciais. A barra de ferramentas em seguida, adiciona as informações para a lista interna de imagens. Você pode adicionar imagens adicionais mais tarde, usando a mensagem TB_ADDBITMAP.

Cada imagem tem um índice com base zero. A primeira imagem que é adicionada à lista interna tem um índice de zero, a segunda imagem tem um índice de um e SO on. A mensagem TB_ADDBITMAP adiciona imagens para o fim da lista e retorna o índice da primeira imagem nova que ele foi adicionado. Você usa um índice de imagem para associar a imagem com um botão.

Windows Embedded CE pressupõe que todos os bitmaps barra de ferramentas do mesmo tamanho. Você especificar o tamanho quando você cria a barra de ferramentas, chamado de CreateToolbarEx função. Se você chamar o CreateWindowEx função para criar uma barra de ferramentas, o tamanho do seu bitmaps é definida como as dimensões usar como padrão de 16 x 15 pixels. Você pode usar a mensagem TB_SETBITMAPSIZE para alteração as dimensões dos bitmaps, mas você devem fazer isso antes de adicionar quaisquer imagens para a lista interna de imagens.

Cada botão pode exibir um seqüência de caracteres in addition to ou INSTEAD OF, uma imagem. Uma barra de ferramentas mantém uma lista interna que contém todas as seqüências de caracteres que estão disponível para botões barra de ferramentas. Você adicionar seqüências de caracteres para a lista interna, usando a mensagem TB_ADDSTRING e especificando o endereço da reserva que contém as seqüências de caracteres que você desejar para adicionar. Cada seqüência de caracteres devem ser terminada por caractere nulo e a última seqüência de caracteres devem ser terminado com NULL dois caracteres.

Cada seqüência de caracteres tem um índice com base zero. A primeira seqüência de caracteres que é adicionado à lista interna de seqüências de caracteres tem um índice de zero, o segundo seqüência de caracteres tem um índice de um e SO on. A mensagem TB_ADDSTRING adiciona seqüências de caracteres para o fim da lista e retorna o índice da primeira seqüência de caracteres novo. Usar o índice de uma seqüência de caracteres para associar o seqüência de caracteres com um botão.

Cada botão em uma barra de ferramentas tem um atual estado que indica se o botão está oculto ou visível, habilitado ou desativado e pressionado ou não pressionado. Você definir a estado inicial de um botão quando você adicionar o botão para a barra de ferramentas e a barra de ferramentas atualiza o estado do botão em resposta às ações do usuário; de exemplo, quando um usuário toques-lo com uma caneta. Você pode usar as mensagens TB_GETSTATE e TB_SETSTATE, respectivamente, para recuperar e definir o estado de um botão.

A seguinte tabela mostra os estados botão da barra de ferramentas que Windows Embedded CE oferece suporte.

Estado Descrição

TBSTATE_CHECKED

O botão tem o estilo TBSTYLE_CHECKED e está pressionado.

TBSTATE_ELLIPSES

O botão exibe elipses (...) se o texto não cabe o tamanho do botão. Esse estilo é exclusivo para Windows Embedded CE.

TBSTATE_ENABLED

O botão aceita entrada usuário. Um botão sem este estado não não aceitar entrada usuário e é esmaecido.

TBSTATE_HIDDEN

O botão não é visível e não poderão receber entrada usuário.

TBSTATE_HIGHLIGHTED

O botão é realçado.

TBSTATE_INDETERMINATE

O botão estiver esmaecido.

TBSTATE_PRESSED

O botão está sendo pressionado.

TBSTATE_WRAP

O botão tem um quebra de linha que segue-lo. O botão também deve ter o estado TBSTATE_ENABLED.

Para criar uma barra de ferramentas

  1. Use o CreateToolbarEx função, que usa a seguinte sintaxe:

    HWND CreateToolbarEx(
        HWND hwnd,   
        DWORD ws,   
        UINT wID,    
        int nBitmaps,    
        HINSTANCE hBMInst, 
        UINT wBMID,    
        LPCTBBUTTON lpButtons, 
        int iNumButtons,    
        int dxButton,    
        int dyButton,    
        int dxBitmap,    
        int dyBitmap,    
        UINT uStructSize   
    );   
    

    Aqui*, hWnd* é o identificador para o janela pai que possui a barra de ferramentas e ws é o estilo da barra de ferramentas. No mínimo, uma barra de ferramentas devem incluir o estilo estilo. Você também pode especificar outros estilos. De exemplo, em Windows Embedded CE, o estilo TBSTYLE_LIST cria uma barra de ferramentas com variável-botões largura. Se você desejar usar o estilo TBSTYLE_LIST com fixa-largura botões, você pode substituir o comportamento usar como padrão enviando uma mensagem TB_SETBUTTONSIZE ou uma mensagem TB_SETBUTTONWIDTH. Para manter um barra de ferramentas de automaticamente alinhando ao parte superior ou inferior de uma janela pai, especificar o estilo CCS_NOPARENTALIGN. Para um completo listagem de com suporte estilos, consulte Janela e estilos de controle.

    O identificador que está associado com a barra de ferramentas é especificado na wID. O nBitmaps parâmetro especifica o número de imagens botão que estão contidas no bitmap especificado pelo hBMInst e wBMID.

    Botão dados estão contidos em uma matriz de estruturas que está nomeado TBBUTTON; lpButtons é o endereço dessa matriz. Dados específicos botão — such as o número de botões para adicionar a barra de ferramentas, botão largura e altura e a largura e altura de imagens botão — é especificado na iNumButtons, dxButton e dyButton, e dxBitmap e dyBitmap, respectivamente. O tamanho das TBBUTTON estrutura é especificada na uStructSize. O seguinte instantâneo mostra uma barra de ferramentas Windows Embedded CE.

O seguinte exemplo de código mostra como criar e registrar um barra de ferramentas.

HWND WINAPI CreateToolbar (HWND hwnd)
{
  int iCBHeight;              // Height of the command bar 
  DWORD dwStyle;              // Style of the toolbar
  HWND hwndTB = NULL;         // Handle to the command bar control 
  RECT rect,                  // Contains the coordinates of the main 
                              // window client area         
       rectTB;                // Contains the dimensions of the bounding
                              // rectangle of the toolbar control
  INITCOMMONCONTROLSEX iccex; // The INITCOMMONCONTROLSEX structure
  
  iccex.dwSize = sizeof (INITCOMMONCONTROLSEX);
  iccex.dwICC = ICC_BAR_CLASSES;

  // Register toolbar control classes from the DLL for the common 
  // control.
  InitCommonControlsEx (&iccex);

  // Create the toolbar control.
  dwStyle = WS_VISIBLE | WS_CHILD | TBSTYLE_TOOLTIPS | 
            CCS_NOPARENTALIGN;
  
  if (!(hwndTB = CreateToolbarEx (
                  hwnd,               // Parent window handle
                  dwStyle,            // Toolbar window styles
                  (UINT) ID_TOOLBAR,  // Toolbar control identifier
                  NUMIMAGES,          // Number of button images
                  hInst,              // Module instance 
                  IDB_TOOLBAR,        // Bitmap resource identifier
                  tbButton,           // Array of TBBUTTON structure 
                                      // contains button data
                  sizeof (tbButton) / sizeof (TBBUTTON),
                                      // Number of buttons in toolbar
                  BUTTONWIDTH,        // Width of the button in pixels
                  BUTTONHEIGHT,       // Height of the button in pixels
                  IMAGEWIDTH,         // Button image width in pixels
                  IMAGEHEIGHT,        // Button image height in pixels
                  sizeof (TBBUTTON))))// Size of a TBBUTTON structure
  {
    return NULL;
  }
  
  // Add ToolTips to the toolbar.
  SendMessage (hwndTB, TB_SETTOOLTIPS, (WPARAM) NUMIMAGES, 
               (LPARAM) szToolTips);

  // Reposition the toolbar.
  GetClientRect (hwnd, &rect);
  GetWindowRect (hwndTB, &rectTB);
  iCBHeight = CommandBar_Height (hwndCB);
  MoveWindow (hwndTB, 
              0, 
              iCBHeight - 2, 
              rect.right - rect.left, 
              rectTB.bottom - rectTB.top,
              TRUE);

  return hwndTB;
}

Você também pode chamar o CreateWindowEx função para criar uma barra de ferramentas. Usando esse método, no entanto, você criar uma barra de ferramentas que contém inicialmente há botões. Você pode adicionar botões para o barra de ferramentas, usando a mensagem TB_ADDBUTTONS ou a mensagem TB_INSERTBUTTON. Se você usar o CreateWindowEx função para criar a barra de ferramentas, o aplicativo deve enviar uma mensagem TB_BUTTONSTRUCTSIZE para a barra de ferramentas antes de enviar uma mensagem TB_ADDBUTTONS ou TB_INSERTBUTTON.

Você registrar a classe barra de ferramentas, especificando o TOOLBARCLASSNAME classe janela. Windows Embedded CE registra o TOOLBARCLASSNAME classe quando ele carrega o DLL para a comum controle DLL. Você pode chamar o InitCommonControls função para garantir que este DLL é carregado. Quando você registrar a classe barra de ferramentas por chamado de InitCommonControlsEx função, especificar o sinalizador ICC_BAR_CLASSES como o dwICC membro das INITCOMMONCONTROLSEX estrutura que você transmitir in a lpInitCtrls parâmetro.

Se você usar CreateWindowEx Para criar uma barra de ferramentas, você deve especificar o estilo janela estilo. CreateToolbarEx Inclui o estilo estilo Por padrão. Você deve especificar o janela pai inicial quando você cria a barra de ferramentas, mas você pode alteração a janela pai depois de criar a barra de ferramentas, usando a mensagem TB_SETPARENT.

Windows Embedded CE faz não suporte usuário personalização das barras de ferramentas, ou arrastar - e - operações ato de soltar para barras de ferramentas.

See Also

Concepts

Working with Common Controls
Creating Controls

Other Resources