如何创建列表视图控件
本主题演示如何创建列表视图控件。 若要创建列表视图控件,请使用 CreateWindow 或 CreateWindowEx 函数并指定 WC_LISTVIEW 窗口类。
还可以将列表视图控件创建为对话框模板的一部分。 必须将 WC_LISTVIEW 指定为类名。 若要将列表视图控件用作对话框模板的一部分,必须先调用 InitCommonControls 或 InitCommonControlsEx,然后才能创建对话框的实例。
需要了解的事项
技术
先决条件
- C/C++
- Windows 用户界面编程
说明
首先通过调用 InitCommonControlsEx 函数来注册窗口类,并在随附的 INITCOMMONCONTROLSEX 结构中指定 ICC_LISTVIEW_CLASSES 位。 这可确保加载公共控件 DLL。 接下来,使用 CreateWindow 或 CreateWindowEx 函数并指定 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.
相关主题