[英]Win32 API ListView Creation (C++)
我想用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。
有人可以幫我正確顯示列表視圖嗎?
以下是用Windows API和C編寫的ListView控件原始MSDN示例代碼的鏈接。它在VC ++ 2010中編譯。
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, ...);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.