我想用c ++创建一个ListView。 到目前为止我的代码:
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);
但是如果我编译并执行代码,只会显示一个空白窗口。编译器:Windows 7(x86)上的MinGW。
有人可以帮我正确显示列表视图吗?
答案 0 :(得分:7)
以下是使用Windows API和C编写的ListView control原始MSDN示例代码的链接。 它在VC ++ 2010中编译。
答案 1 :(得分:4)
WC_LISTVIEWW
(注意结尾的额外W)是wchar_t*
,但是您将其输入char*
。只有在未定义UNICODE
的情况下才会进行编译,从而将通用CreateWindowEx()
地图设为CreateWindowExA()
。这意味着您正在尝试使用Ansi版本CreateWindowEx()
创建Unicode窗口。那不行。
您需要:
使用通用WC_LISTVIEW
,因此它匹配通用CreateWindowEx
(),并摆脱类型转换:
list = CreateWindowEx(..., WC_LISTVIEW, ...);
继续使用WC_LISTVIEWW
,但请致电CreateWindowExW()
:
list = CreateWindowExW(..., WC_LISTVIEWW, ...);