如何创建列表视图控件

本主题演示如何创建列表视图控件。 若要创建列表视图控件,请使用 CreateWindowCreateWindowEx 函数并指定 WC_LISTVIEW 窗口类。

还可以将列表视图控件创建为对话框模板的一部分。 必须将 WC_LISTVIEW 指定为类名。 若要将列表视图控件用作对话框模板的一部分,必须先调用 InitCommonControlsInitCommonControlsEx,然后才能创建对话框的实例。

需要了解的事项

技术

先决条件

  • C/C++
  • Windows 用户界面编程

说明

首先通过调用 InitCommonControlsEx 函数来注册窗口类,并在随附的 INITCOMMONCONTROLSEX 结构中指定 ICC_LISTVIEW_CLASSES 位。 这可确保加载公共控件 DLL。 接下来,使用 CreateWindowCreateWindowEx 函数并指定 WC_LISTVIEW 窗口类。

注意

默认情况下,列表视图控件使用图标标题字体。 但是,可以使用 WM_SETFONT 消息指定文本要使用的字体。 在插入任何项之前,应发送此消息。 该控件使用由 WM_SETFONT 消息指定的字体尺寸来确定间距和布局。 还可以自定义每个项的字体。 有关详细信息,请参阅自定义绘图

 

以下 C++ 代码示例在报表视图中创建列表视图控件。

// 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);
}

通常,列表视图应用程序使用户能够从一个视图更改为另一个视图。

以下 C++ 代码示例更改列表视图的窗口样式,进而更改视图。

// 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.

列表视图控件参考

关于列表视图控件

使用列表视图控件