2016-05-26 99 views
2

我目前正在學習C++的Windows API,我試圖創建一個ListView控件。我從MSDN文檔編輯源代碼,但我卡住,因爲沒有實際顯示在我的窗口中的列表視圖。當我創建不同的控件時,它們顯示沒有問題。我使用這個函數來創建ListView。Windows C++ API列表視圖不顯示

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

添加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; 
} 
+0

感謝,加入WS_VISIBLE解決了這個問題。 –