4,011
社区成员
发帖
与我相关
我的任务
分享
//MListCtrl.h
#if !defined(AFX_MLISTCTRL_H__9D014815_8777_4347_B97A_41D2763EAB79__INCLUDED_)
#define AFX_MLISTCTRL_H__9D014815_8777_4347_B97A_41D2763EAB79__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CMListCtrl : public CListCtrl {
public:
CMListCtrl();
virtual ~CMListCtrl();
public:
BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText);
CString GetItemText(int nItem, int nSubItem);
};
#endif // !defined(AFX_MLISTCTRL_H__9D014815_8777_4347_B97A_41D2763EAB79__INCLUDED_)
#include "stdafx.h"
#include "MListCtrl.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMListCtrl::CMListCtrl() {
CListCtrl::CListCtrl();
}
CMListCtrl::~CMListCtrl() {
CListCtrl::~CListCtrl();
}
BOOL CMListCtrl::SetItemText(int nItem, int nSubItem, LPCTSTR lpszText) {
ASSERT(::IsWindow(m_hWnd));
ASSERT((GetStyle() & LVS_OWNERDATA)==0);
LVITEM lvi;
lvi.iSubItem = nSubItem;
lvi.pszText = (LPTSTR)lpszText;
::SendMessage(m_hWnd, LVM_SETITEMTEXT, nItem, (LPARAM)&lvi);
return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMTEXT, nItem, (LPARAM)&lvi);
}
CString CMListCtrl::GetItemText(int nItem, int nSubItem) {
ASSERT(::IsWindow(m_hWnd));
LVITEM lvi;
memset(&lvi, 0, sizeof(LVITEM));
lvi.iSubItem = nSubItem;
CString str;
int nLen = 1024; //修改此值,以改变Item长度限制
int nRes;
do {
nLen *=2;
lvi.cchTextMax = nLen;
lvi.pszText = str.GetBufferSetLength(nLen);
nRes = (int)::SendMessage(m_hWnd, LVM_GETITEMTEXT, (WPARAM)nItem, (LPARAM)&lvi);
} while (nRes == nLen-1);
str.ReleaseBuffer();
return str;
}