NM_LISTVIEW

 NM_LISTVIEW结构.该结构用于存储列表视图的通知消息的有关信息,大部分列表视图的通知消息都会附带指向该结构的指针.NM_LISTVIEW的定义为

typedef   struct   tagNM_LISTVIEW   {  

NMHDR   hdr;   //标准的NMHDR结构

int   iItem;   //表项的索引,若为-1则无效

int   iSubItem;   //子项的索引,若为0则无效

UINT   uNewState;   //项的新状态

UINT   uOldState;   //项原来的状态

UINT   uChanged;   /*取值与LV_ITEM的mask成员相同,用来表明哪些状态发生了变化*/

POINT   ptAction;   //事件发生时鼠标的客户区坐标

LPARAM   lParam;   //32位的附加数据

}   NM_LISTVIEW;

// ChangeRequest.cpp : 实现文件 // #include "stdafx.h" #include "DrawingCheck.h" #include "ChangeRequest.h" #include "afxdialogex.h" // ChangeRequest 对话框 IMPLEMENT_DYNAMIC(ChangeRequest, CDialogEx) ChangeRequest::ChangeRequest(CWnd* pParent /*=NULL*/) : CDialogEx(IDD_DIALOG2, pParent) { } ChangeRequest::~ChangeRequest() { } void ChangeRequest::SetListDatas(vector<CString> Datas) { listDatas = Datas; } void ChangeRequest::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST1, m_list); } BEGIN_MESSAGE_MAP(ChangeRequest, CDialogEx) ON_NOTIFY(NM_CLICK, IDC_LIST1, &ChangeRequest::OnLvnItemClickList) ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, &ChangeRequest::OnNMCustomdrawList1) END_MESSAGE_MAP() BOOL ChangeRequest::OnInitDialog() { CDialog::OnInitDialog(); DWORD dwStyle = m_list.GetExtendedStyle(); dwStyle |= LVS_EX_ONECLICKACTIVATE; dwStyle |= LVS_EX_FLATSB; //扁平风格的滚动条 dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮 dwStyle |= LVS_EX_GRIDLINES;//网格线 CImageList high; high.Create(1, 30, TRUE | ILC_COLOR32, 1, 1);//行高 m_list.SetImageList(&high, LVSIL_SMALL); m_list.SetExtendedStyle(dwStyle); //设置扩展风格 m_list.InsertColumn(0, _T("序号"), LVCFMT_CENTER, 38); m_list.InsertColumn(1, _T("跳转变更申请"), LVCFMT_CENTER, 100); m_list.InsertColumn(2, _T("链接"), LVCFMT_CENTER, 0); int size = listDatas.size(); for (int i = 0; i < size; i++) { CString aStrNo; aStrNo.Format(L"%d", i + 1); m_list.EnsureVisible(i, TRUE); m_list.InsertItem(i, aStrNo); } map<CString, CString>::iterator it; for (int i=0;i< listDatas.size(); i++) { m_list.SetItemText(i, 1, L"跳转"); m_list.SetItemText(i, 2, listDatas[i]); } return 0; } void ChangeRequest::OnLvnItemClickList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLISTVIEW pNMItemActivate = reinterpret_cast<LPNMLISTVIEW>(pNMHDR); int m_nSel; int iCol; if (pNMItemActivate != NULL) { m_nSel = pNMItemActivate->iItem; iCol = pNMItemActivate->iSubItem; } if (m_nSel != -1 && iCol == 1)//跳转 { CString strPath; strPath = m_list.GetItemText(m_nSel, 2); ShellExecute(NULL, NULL, strPath, NULL, NULL, SW_SHOWNORMAL); } *pResult = 0; } void ChangeRequest::OnNMCustomdrawList1(NMHDR * pNMHDR, LRESULT * pResult) { NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR); NM_LISTVIEW * pNMListView = (NM_LISTVIEW*)pNMHDR; CRect rect; CDC* pDC = CDC::FromHandle(pLVCD->nmcd.hdc); // 将设备上下文句柄转换为设备上下文类 *pResult = CDRF_DODEFAULT; if (CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage) { *pResult = CDRF_NOTIFYITEMDRAW; } else if (CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage) { *pResult = CDRF_NOTIFYSUBITEMDRAW; } else if ((CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage) { COLORREF crText, crBkgnd; if (1 == pLVCD->iSubItem) { crText = RGB(24, 144, 255); crBkgnd = RGB(255, 255, 255); } else { crText = RGB(0, 0, 0); crBkgnd = RGB(255, 255, 255); } pLVCD->clrText = crText; pLVCD->clrTextBk = crBkgnd; } } 修改该代码,转为QT框架,不要修改原有的代码逻辑,使用QTableView和QStandardItemModel
最新发布
08-24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值