winapi — Win32 API ListView Создание (C ++)

Я хочу создать ListView в C ++.
Мой код до сих пор:

InitCommonControls(); // Force the common controls DLL to be loaded.
HWND list;

// window is a handle to my window that is already created.
list = CreateWindowEx(0, (LPCSTR) WC_LISTVIEWW, NULL, WS_VISIBLE | WS_CHILD | WS_BORDER | LVS_SHOWSELALWAYS | LVS_REPORT, 0, 0, 250, 400, window, NULL, NULL, NULL);

LVCOLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.iSubItem = 0;
lvc.pszText = "Title";
lvc.cx = 50;
lvc.fmt = LVCFMT_LEFT;
ListView_InsertColumn(list, 0, &lvc);

Но если я скомпилирую и выполню код, появится только пустое окно. Компилятор: MinGW на Windows 7 (x86).

Кто-нибудь может мне помочь, чтобы показать список правильно?

2

Решение

Вот ссылка на оригинальный пример кода MSDN Элемент управления ListView написано в Windows API и C.
Компилируется в VC ++ 2010.

7

Другие решения

WC_LISTVIEWW (обратите внимание на дополнительный W на конце) является wchar_t*, но вы набираете его char*, Это скомпилируется только если UNICODE не определяется, что делает общий CreateWindowEx() сопоставить с CreateWindowExA(), Это означает, что вы пытаетесь создать окно Unicode с версией Ansi CreateWindowEx(), Это не будет работать.

Вам нужно либо:

  1. использовать общий WC_LISTVIEW так что это соответствует общим CreateWindowEx() и избавиться от приведенного типа:

    list = CreateWindowEx(..., WC_LISTVIEW, ...);
    
  2. продолжайте использовать WC_LISTVIEWW, но позвони CreateWindowExW() вместо:

    list = CreateWindowExW(..., WC_LISTVIEWW, ...);
    
4

По вопросам рекламы [email protected]