Windwos API, WC_LISTVIEW 插入元组成功却显示不了?

neicole 2013-08-12 10:24:06

新建一个windows窗口,类型为WC_LISTVIEW,使用SendMessage插入元素,研究了半天,一直找不到插入元素失败的原因。SendMessage返回的结果是插入成功,不过却不能看见元组出现在列表中。


BOOL KScreenshotWindow::_CreateButtomListWindow()
{
INITCOMMONCONTROLSEX iCex;

// Ensure that the common control DLL is loaded.

iCex.dwSize = sizeof(INITCOMMONCONTROLSEX);
iCex.dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&iCex);

// Create the list-view window in report view with label
// editing enabled.

m_hButtomListView =
::CreateWindow (
WC_LISTVIEW, /// ListBox,
L"MyListButtom",
WS_CHILD| ///WS_VISIBLE |
LVS_ALIGNLEFT |
LVS_REPORT ///| LVS_ALIGNTOP | LVS_EDITLABELS |
/// LVS_ICON |
/// LVS_NOCOLUMNHEADER | LVS_NOSCROLL
,
/// LVS_LIST | LVS_NOLABELWRAP
0,
0,
1000, /// button加起来的长度
100, /// button的高度
m_hWindows,
NULL,
m_hInst,
NULL
);

if (NULL == m_hButtomListView)
{
return FALSE;
}

LV_COLUMN lvcColumn;
lvcColumn.mask = LVCF_TEXT | LVCF_WIDTH; /// LVCF_IMAGE
lvcColumn.mask |= LVCF_FMT;
lvcColumn.fmt = LVCFMT_LEFT;
lvcColumn.cx = 50; /// 单个图标的像素
lvcColumn.pszText = L"功能";
SendMessage(m_hButtomListView, LVM_INSERTCOLUMN, nColumnFunId, (LPARAM)&lvcColumn);

LVITEM lvcItem;
lvcItem.mask = LVCF_TEXT; /// LVCF_IMAGE
lvcItem.iItem = 0;
lvcItem.iSubItem = 0;
lvcItem.lParam = nColumnFunId;

LONG nRes = 110;
lvcItem.pszText = L"square";
nRes = SendMessage(m_hButtomListView, LVM_INSERTITEM, 0, (LPARAM)&lvcItem);

/// 这里断点nRes返回的是0,插入成功,但是却不能显示

lvcItem.pszText = L"circle";
SendMessage(m_hButtomListView, LVM_INSERTITEM, 0, (LPARAM)&lvcItem);
lvcItem.pszText = L"finish";
SendMessage(m_hButtomListView, LVM_INSERTITEM, 0, (LPARAM)&lvcItem);


ShowWindow(m_hButtomListView, SW_SHOW);
UpdateWindow(m_hButtomListView);
return TRUE;
}
...全文
187 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
neicole 2013-08-14
  • 打赏
  • 举报
回复
原来是69行的一个字母错了~ 谢谢楼上的~ lvcItem.mask = LVCF_TEXT; 改为 lvcItem.mask = LVIF_TEXT;
schlafenhamster 2013-08-14
  • 打赏
  • 举报
回复
参考: HWND CreateListView(HINSTANCE hInstance, HWND hwndParent) { DWORD dwStyle; HWND hwndListView; BOOL bSuccess = TRUE; // custom draw dwStyle = WS_TABSTOP | WS_CHILD | WS_BORDER | WS_VISIBLE | LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS; //| LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_GRIDLINES| LVS_EX_INFOTIP | LVS_AUTOARRANGE | LVS_OWNERDATA; hwndListView = CreateWindowEx( WS_EX_WINDOWEDGE,//WS_EX_CLIENTEDGE,// ex style WC_LISTVIEW, // class name defined in commctrl.h NULL, // window text dwStyle, // style 4, // x position 120, // y position LV_WIDTH, // width LV_HEIGHT, // height hwndParent, // parent (HMENU)IDC_LISTVIEW, // ID (HINSTANCE)GetWindowLong(hwndParent, GWL_HINSTANCE), // instance NULL); // no extra data // if(hwndListView) { ListView_SetExtendedListViewStyleEx(hwndListView,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT); InitLvHead(hwndListView); // LVITEM lvi; ZeroMemory(&lvi, sizeof(lvi)); lvi.mask=LVIF_TEXT;//|LVIF_IMAGE; lvi.cchTextMax=40; lvi.iSubItem=0; lvi.pszText="MainItem"; lvi.iItem=0; int now=ListView_InsertItem(hwndListView,&lvi); // ListView_SetItemText(hwndListView,now,1,"Column 1"); ListView_SetItemText(hwndListView,now,2,"Column 2"); ListView_SetItemText(hwndListView,now,3,"Column 3"); ListView_SetItemText(hwndListView,now,4,"Column 4"); ListView_SetItemText(hwndListView,now,5,"Column 5"); // now=ListView_InsertItem(hwndListView,&lvi); // ListView_SetItemText(hwndListView,now,1,"Column 1"); ListView_SetItemText(hwndListView,now,2,"Column 2"); ListView_SetItemText(hwndListView,now,3,"Column 3"); ListView_SetItemText(hwndListView,now,4,"Column 4"); ListView_SetItemText(hwndListView,now,5,"Column 5"); // now=ListView_InsertItem(hwndListView,&lvi); // ListView_SetItemText(hwndListView,now,1,"Column 1"); ListView_SetItemText(hwndListView,now,2,"Column 2"); ListView_SetItemText(hwndListView,now,3,"Column 3"); ListView_SetItemText(hwndListView,now,4,"Column 4"); ListView_SetItemText(hwndListView,now,5,"Column 5"); // now=ListView_InsertItem(hwndListView,&lvi); // ListView_SetItemText(hwndListView,now,1,"Column 1"); ListView_SetItemText(hwndListView,now,2,"Column 2"); ListView_SetItemText(hwndListView,now,3,"Column 3"); ListView_SetItemText(hwndListView,now,4,"Column 4"); ListView_SetItemText(hwndListView,now,5,"Column 5"); // now=ListView_InsertItem(hwndListView,&lvi); // ListView_SetItemText(hwndListView,now,1,"Column 1"); ListView_SetItemText(hwndListView,now,2,"Column 2"); ListView_SetItemText(hwndListView,now,3,"Column 3"); ListView_SetItemText(hwndListView,now,4,"Column 4"); ListView_SetItemText(hwndListView,now,5,"Column 5"); // now=ListView_InsertItem(hwndListView,&lvi); // ListView_SetItemText(hwndListView,now,1,"Column 1"); ListView_SetItemText(hwndListView,now,2,"Column 2"); ListView_SetItemText(hwndListView,now,3,"Column 3"); ListView_SetItemText(hwndListView,now,4,"Column 4"); ListView_SetItemText(hwndListView,now,5,"Column 5"); // now=ListView_InsertItem(hwndListView,&lvi); // ListView_SetItemText(hwndListView,now,1,"Column 1"); ListView_SetItemText(hwndListView,now,2,"Column 2"); ListView_SetItemText(hwndListView,now,3,"Column 3"); ListView_SetItemText(hwndListView,now,4,"Column 4"); ListView_SetItemText(hwndListView,now,5,"Column 5"); // // HWND hwndHD=ListView_GetHeader(hwndListView); // int all=Header_GetItemCount(hwndHD); // RECT rc; // Header_GetItemRect(hwndHD,all-1,&rc); return hwndListView; } else { return NULL; } }// BOOL InitLvHead(HWND hwndListView) { LV_COLUMN lvColumn; int i; TCHAR szString[5][20] = { TEXT("Column 1"), TEXT("Column 2"), TEXT("Column 3"), TEXT("Column 4"), TEXT("Column 5")}; //initialize the columns lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT ;//| LVCF_SUBITEM; lvColumn.fmt = LVCFMT_LEFT;// ?? | LVCFMT_SPLITBUTTON; lvColumn.cx = 80; for(i = 0; i < 5; i++) { lvColumn.pszText = szString[i]; SendMessage(hwndListView, LVM_INSERTCOLUMN, (WPARAM)i, (LPARAM)&lvColumn); } // return TRUE; }//
neicole 2013-08-14
  • 打赏
  • 举报
回复
没人回答啊,看来要结贴了~

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧