win32 listview,combox使用

本文详细介绍了如何在Windows应用程序中初始化一个对话框,并将其与列表视图控件进行交互,包括设置对话框的初始数据、响应用户操作、更新列表视图内容等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  HWND hwndList = GetDlgItem(hDlg, IDC_LIST_ALLMESSAGE);
HWND hwndCombox = GetDlgItem(hDlg, IDC_COMBOSTATE);
switch (message) {
case WM_INITDIALOG:
SendMessage(hwndList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES);
addColumnFlag = true;
SetListMessage(hwndList);
SetWindowLongPtr(hDlg, GWLP_USERDATA, 100);
SendDlgItemMessage(hDlg, IDC_COMBOSTATE, CB_ADDSTRING, 0, (LPARAM) L"全部");
SendDlgItemMessage(hDlg, IDC_COMBOSTATE, CB_ADDSTRING, 0, (LPARAM) L"未读");
SendMessage(hwndCombox, CB_ADDSTRING, 0, (LPARAM) L"已读");
SendMessage(hwndCombox, CB_SETCURSEL, (WPARAM) 0, (LPARAM) 0); //设置当前选中第0行
break;
case WM_NOTIFY:
if (((LPNMHDR) lParam)->hwndFrom == hwndList) {
switch (((LPNMHDR) lParam)->code) {
case LVN_ITEMCHANGED:
if (GetWindowLongPtr(hDlg, GWLP_USERDATA) == 100) {
NMLISTVIEW *nmlv = (NMLISTVIEW *) lParam;
LVITEM lvI = { 0 };
lvI.iItem = nmlv->iItem;
lvI.iSubItem = 0;
lvI.mask = LVIF_PARAM;
ListView_GetItem(hwndList, &lvI);
if (LVIF_STATE == nmlv->uChanged && (nmlv->uNewState & LVIS_SELECTED))
{

 nmlv->lParam;//解出想要的信息
}
}
break;
}
break;
}
break;
case IDCANCEL:
DestroyWindow(hDlg);
return TRUE;
}

return FALSE;



void SetListMessage(HWND hwndList)
{
if (addColumnFlag)
{
LVCOLUMN lvc = { 0 };
// Initialize the LVCOLUMN structure.
// The mask specifies that the format, width, text, and
// subitem members of the structure are valid.
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT;
lvc.fmt = LVCFMT_CENTER;


//lvc.iSubItem = 0;
//lvc.pszText = _T("选择");
//lvc.cx = 60; // width of column in pixels
//ListView_InsertColumn(hwndList, 0, &lvc);


lvc.iSubItem = 0;
lvc.pszText = _T("序号");
lvc.cx = 60; // width of column in pixels
ListView_InsertColumn(hwndList, 0, &lvc);


lvc.iSubItem = 1;
lvc.pszText = _T("状态");
lvc.cx = 100 - GetSystemMetrics(SM_CXVSCROLL);// 
ListView_InsertColumn(hwndList, 1, &lvc);


lvc.iSubItem = 2;
lvc.pszText = _T("标题");
lvc.cx = 100 - GetSystemMetrics(SM_CXVSCROLL);// 
ListView_InsertColumn(hwndList, 2, &lvc);


lvc.iSubItem = 3;
lvc.pszText = _T("发送人");
lvc.cx = 100 - GetSystemMetrics(SM_CXVSCROLL);// 
ListView_InsertColumn(hwndList, 3, &lvc);


lvc.iSubItem = 4;
lvc.pszText = _T("发送时间");
lvc.cx = 100 - GetSystemMetrics(SM_CXVSCROLL);// 
ListView_InsertColumn(hwndList,4, &lvc);


addColumnFlag = false;
//enumerate plugins, fill in list
//bool one_enabled = false;
}
ListView_DeleteAllItems(hwndList);


//// Some code to create the list-view control.
//// Initialize LVITEM members that are common to all items.
LVITEM lvI = { 0 };
lvI.mask = LVIF_TEXT | LVIF_PARAM | LVIF_NORECOMPUTE;// | LVIF_IMAGE;


list<SystemMessageOperator*>::iterator allMesIter;
int i = 0;
for (allMesIter = allMessageOperator.begin(); allMesIter != allMessageOperator.end(); allMesIter++)
{


lvI.mask = LVIF_TEXT | LVIF_PARAM;// | LVIF_IMAGE;
lvI.iSubItem = 0;
lvI.lParam = (LPARAM) *allMesIter;
lvI.pszText = (LPWSTR) ((SystemMessageOperator) **allMesIter).mesId.c_str();
lvI.iItem = i;


if (ListView_InsertItem(hwndList, &lvI) != -1)
{
LV_ITEM lvitem = { 0 };


wstring tw;
tw = IntToWstring(i);
lvitem.mask = LVIF_TEXT;
lvitem.iItem = i;
lvitem.iSubItem = 0;
lvitem.pszText = (LPWSTR) tw.c_str();
ListView_SetItem(hwndList, &lvitem);




tw = ((SystemMessageOperator) **allMesIter).isRead;
if (L"1" == tw)
{
tw = L"已读";
}
else
{
tw = L"未读";


}
lvitem.mask = LVIF_TEXT;
lvitem.iItem = i;
lvitem.iSubItem = 1;
lvitem.pszText = (LPWSTR) (tw.c_str());
ListView_SetItem(hwndList, &lvitem);




tw = ((SystemMessageOperator) **allMesIter).title;
lvitem.mask = LVIF_TEXT;
lvitem.iItem = i;
lvitem.iSubItem = 2;
lvitem.pszText = (LPWSTR) (tw.c_str());
ListView_SetItem(hwndList, &lvitem);




tw = ((SystemMessageOperator) **allMesIter).sendCode;
lvitem.iItem = i;
lvitem.iSubItem = 3;
lvitem.pszText = (LPWSTR) tw.c_str();
ListView_SetItem(hwndList, &lvitem);




tw = ((SystemMessageOperator) **allMesIter).sendTime;
lvitem.mask = LVIF_TEXT;
lvitem.iItem = i;
lvitem.iSubItem = 4;
lvitem.pszText = (LPWSTR) tw.c_str();
ListView_SetItem(hwndList, &lvitem);


}
++i;
}






}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值