Windows C ++ API列表视图未显示

时间:2016-05-26 12:00:20

标签: c++ windows api listview

我目前正在学习Windows API for C ++,并且我正在尝试创建一个ListView控件。我编辑了MSDN文档中的源代码,但是因为我的窗口中没有实际显示的列表视图而导致我被卡住了。当我创建不同的控件时,它们显示没有问题。我使用此函数来创建ListView。

HWND CreateListView(HWND hwndParent)
{
    INITCOMMONCONTROLSEX icex;           
    icex.dwICC = ICC_LISTVIEW_CLASSES;
    icex.dwSize = sizeof(icex);
    if(InitCommonControlsEx(&icex) == FALSE) MessageBox(NULL,L"Initiation of common controls failed",L"Fail", MB_OK);

    RECT rcClient;                       

    GetClientRect(hwndParent, &rcClient);


    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_DATABAZA_LIST,
    hInst,
    NULL);

    return (hWndListView);
}

创建列表视图没有问题,但它没有在窗口中显示。这可能是什么问题?

1 个答案:

答案 0 :(得分:1)

添加WS_VISIBLE标志:

HWND hWndListView = CreateWindow(WC_LISTVIEW, L"", 
    WS_VISIBLE|WS_CHILD|LVS_REPORT|LVS_EDITLABELS,...)

或使用ShowWindow(hWndListView, SW_SHOW)SetWindowPos(hWndListView,...,SWP_NOZORDER|SWP_SHOWWINDOW);

并添加错误检查

if (!hWndListView)
{
    OutputDebugStringW(L"error\n");
    return NULL;
}