Como criar um controle de exibição de lista
Este tópico demonstra como criar um controle de exibição de lista. Para criar um controle de exibição de lista, use a função CreateWindow ou CreateWindowEx e especifique a classe de janela WC_LISTVIEW.
Um controle de exibição de lista também pode ser criado como parte de um modelo de caixa de diálogo. Você deve especificar WC_LISTVIEW como o nome da classe. Para usar um controle de exibição de lista como parte de um modelo de caixa de diálogo, você deve chamar InitCommonControls ou InitCommonControlsEx antes de criar uma instância da caixa de diálogo.
O que você precisa saber
Tecnologias
Pré-requisitos
- C/C++
- Programação da interface do usuário do Windows
Instruções
Primeiro registre a classe window chamando a função InitCommonControlsEx e especificando o bit ICC_LISTVIEW_CLASSES na estrutura INITCOMMONCONTROLSEX que a acompanha. Isso garante que a DLL de controles comuns seja carregada. Em seguida, use a função CreateWindow ou CreateWindowEx e especifique a classe de janela WC_LISTVIEW.
Observação
Por padrão, um controle de exibição de lista usa a fonte do título do ícone. No entanto, você pode usar uma mensagem WM_SETFONT para especificar a fonte a ser usada para o texto. Você deve enviar essa mensagem antes de inserir qualquer item. O controle usa as dimensões da fonte especificada pela mensagem WM_SETFONT para determinar o espaçamento e o layout. Você também pode personalizar a fonte para cada item. Para obter mais informações, consulte Desenho personalizado.
O exemplo de código C++ a seguir cria um controle de exibição de lista no modo de exibição de relatório.
// CreateListView: Creates a list-view control in report view.
// Returns the handle to the new control
// TO DO: The calling procedure should determine whether the handle is NULL, in case
// of an error in creation.
//
// HINST hInst: The global handle to the application instance.
// HWND hWndParent: The handle to the control's parent window.
//
HWND CreateListView (HWND hwndParent)
{
INITCOMMONCONTROLSEX icex; // Structure for control initialization.
icex.dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&icex);
RECT rcClient; // The parent window's client area.
GetClientRect (hwndParent, &rcClient);
// Create the list-view window in report view with label editing enabled.
HWND hWndListView = CreateWindow(WC_LISTVIEW,
L"",
WS_CHILD | LVS_REPORT | LVS_EDITLABELS,
0, 0,
rcClient.right - rcClient.left,
rcClient.bottom - rcClient.top,
hwndParent,
(HMENU)IDM_CODE_SAMPLES,
g_hInst,
NULL);
return (hWndListView);
}
Normalmente, os aplicativos de exibição de lista permitem que o usuário mude de um modo de exibição para outro.
O exemplo de código C++ a seguir altera o estilo de janela do modo de exibição de lista, que por sua vez altera o modo de exibição.
// SetView: Sets a list-view's window style to change the view.
// hWndListView: A handle to the list-view control.
// dwView: A value specifying the new view style.
//
VOID SetView(HWND hWndListView, DWORD dwView)
{
// Retrieve the current window style.
DWORD dwStyle = GetWindowLong(hWndListView, GWL_STYLE);
// Set the window style only if the view bits changed.
if ((dwStyle & LVS_TYPEMASK) != dwView)
{
SetWindowLong(hWndListView,
GWL_STYLE,
(dwStyle & ~LVS_TYPEMASK) | dwView);
} // Logical OR'ing of dwView with the result of
} // a bitwise AND between dwStyle and
// the Unary complement of LVS_TYPEMASK.
Tópicos relacionados