簡體   English   中英

Win32 API ListView創建(C ++)

[英]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窗口。 那不管用。

你需要:

  1. 使用泛型WC_LISTVIEW ,使其匹配泛型CreateWindowEx (),並擺脫類型轉換:

     list = CreateWindowEx(..., WC_LISTVIEW, ...); 
  2. 繼續使用WC_LISTVIEWW ,但改為調用CreateWindowExW()

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM