Я хочу создать 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).
Кто-нибудь может мне помочь, чтобы показать список правильно?
Вот ссылка на оригинальный пример кода MSDN Элемент управления ListView написано в Windows API и C.
Компилируется в VC ++ 2010.
WC_LISTVIEWW
(обратите внимание на дополнительный W на конце) является wchar_t*
, но вы набираете его char*
, Это скомпилируется только если UNICODE
не определяется, что делает общий CreateWindowEx()
сопоставить с CreateWindowExA()
, Это означает, что вы пытаетесь создать окно Unicode с версией Ansi CreateWindowEx()
, Это не будет работать.
Вам нужно либо:
использовать общий WC_LISTVIEW
так что это соответствует общим CreateWindowEx
() и избавиться от приведенного типа:
list = CreateWindowEx(..., WC_LISTVIEW, ...);
продолжайте использовать WC_LISTVIEWW
, но позвони CreateWindowExW()
вместо:
list = CreateWindowExW(..., WC_LISTVIEWW, ...);