Compartilhar via


Creating a List Box

Windows Mobile Not SupportedWindows Embedded CE Supported

9/9/2008

A listagem não ociosa é uma janela que exibe uma lista de seqüências de caracteres caractere. Um usuário seleciona um seqüência de caracteres da lista tocando-lo com a caneta. Quando um seqüência de caracteres estiver selecionada, ela estará realçado. Caixas de listagem são colocadas geralmente no diálogo caixas, mas eles também podem ser colocados em uma janela normal especificando a classe janela ListBox na Boolean parâmetro da CreateWindow função ou a CreateWindowEx função.

Para criar um controle caixa lista em uma caixa diálogo

  • Adicione o seguinte ListBox recurso-declaração definição para o Dialog recurso.

    LISTBOX id, x, y, width, height [[, style [[, extended-style]]]]
    

    Aqui, ID é o valor que identifica a caixa lista. O upper-left corner do controle está posicionado no coordenadas x, y, e sua dimensão é determinado pelos valores largura e altura. Ambos estilo e estendido-estilo Determine a aparência da caixa de lista. The Microsoft Win32® API fornece dois tipos de caixas lista: simples - seleção, que é o tipo usar como padrão e múltiplo - seleção. Em um único-caixa lista seleção, um usuário pode selecionar somente um item por um tempo. Em um múltiplo-caixa lista seleção, um usuário pode selecionar more than um item por um tempo. Para criar um múltiplo-caixa lista seleção, especificar o estilo LBS_MULTIPLESEL ou o estilo LBS_EXTENDEDSEL.

    Observação

    Windows Embedded CE suporta o estilo LBS_EX_CONSTSTRINGDATA, que salva memória RAM quando uma tabela grande de seqüências de caracteres na ROM é inserida em uma caixa lista.

    Lista todas as caixas em Windows Embedded CE têm o estilo LBS_HASSTRINGS Por padrão. Windows Embedded CE faz não caixas lista suporte Owner-drawn. Para um completo listagem de com suporte estilos, consulte Janela e estilos de controle. Se o estilo janela WS_EX_LAYOUTRTL estiver definido, a caixa lista terá a ser espelhado. A ordem de leitura pode ser também ser controlado pelo estilo janela WS_EX_RTLREADING.

    O seguinte instantâneo mostra uma caixa lista.

Porque são caixas lista vazio Por padrão, você deve inicializar ou preencher a caixa lista com dados quando a caixa diálogo que contém o caixa de listagem é exibida. Cada tempo que uma caixa diálogo é ativada, o sistema envia uma mensagem WM_INITDIALOG para o procedimento janela para a caixa diálogo. O procedimento janela para uma caixa diálogo é responsável pela inicialização e monitoração suas janelas filho, incluindo caixas de lista. O procedimento janela para caixa de diálogo se comunica com a caixa lista enviando mensagens para ele e pelo processamento de notificação mensagens que são enviadas pelo caixa de lista. Para inicializar o caixa de listagem, modificar seu procedimento janela para caixa de diálogo adicionando uma maiúsculas e minúsculas para a Switch declaração no procedimento. O seguinte exemplo de código mostra como inicializar uma caixa lista.

#define IDC_FONTLIST  1000        // Control identifier of the list box

int iNumOfFonts = 0;              // The total number of fonts
int iCurrItem = -1;               // The index of newly selected or
                                  // added font name in the list box
BOOL CALLBACK FontListDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, 
                               LPARAM lParam)
{
  int index = 1,
      iFontIndex;           // Font list index
  TCHAR szFontName[80],     // For the currently enumerated font name
        szFontNamePrev[80]; // For the previously enumerated font name
  HWND hwndFontListCtrl;    // Window handle to the font list box
  
  // Get the window handle to the font list box control in the dialog
  // box.
  hwndFontListCtrl = GetDlgItem (hwndDlg, IDC_FONTLIST);
        
  switch (uMsg)
  {
    case WM_INITDIALOG:
      // Need to find the total number of fonts, iNumOfFonts, prior to 
      // the following code.

      for (iFontIndex = 0; iFontIndex < iNumOfFonts; ++iFontIndex)
      {
        // Insert code here to retrieve the name of each font, and then 
        // put the font name in szFontName.
        // ...

        // Add the font name to the list control.
        iCurrItem = SendMessage (hwndFontListCtrl, LB_ADDSTRING, 0, 
                                 (LPARAM)(LPCTSTR) szFontName);

        // Set a 32-bit value, (LPARAM) iFontIndex, that is associated
        // with the newly added item in the list control.
        SendMessage (hwndFontListCtrl, LB_SETITEMDATA,      
                     (WPARAM) iCurrItem, (LPARAM) iFontIndex);  
      }

      // Select the first font name in the list control.
      SendMessage (hwndFontListCtrl, LB_SETCURSEL, 0, 0);

      return TRUE;  

    case WM_COMMAND:
      switch (LOWORD (wParam))
      {
        case IDOK:
          // Retrieve the index of the currently selected font.
          if ((iCurrItem = SendMessage (hwndFontListCtrl, LB_GETCURSEL, 
                                        0, 0)) != LB_ERR)
          {
            iFontIndex = SendMessage (hwndFontListCtrl, LB_GETITEMDATA, 
                                      iCurrItem, 0);

            // Get the currently selected font from the index.
            CurrLogFont = g_lpEnumLogFont[iFontIndex].elfLogFont;

            EndDialog (hwndDlg, 0);
            return TRUE;
          }

        case IDCANCEL:
          iCurrItem = -1;
          EndDialog (hwndDlg, 0);
          return TRUE;
      }
      break;
  }
  return FALSE;
}

See Also

Concepts

Working with Window Controls

Other Resources

GWES Application Development