VC++6.0 如何进行clistctrl 重载

这是网上找的重载函数 问题是1.CListCtrlEx 这个变量是不是我也可以用,如果不可以我应该取那个值替换它 2.在窗口的那个位置增加这段代码?
CString CListCtrlEx::GetItemText(int nItem, int nSubItem)
{
ASSERT(::IsWindow(m_hWnd));
LVITEM lvi;
memset(&lvi, 0, sizeof(LVITEM));
lvi.iSubItem = nSubItem;
CString str;
int nLen = BUFSIZ*2; //
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;
}

你需要的重载步骤是这样的:
菜单中找到New Class(添加类),输入类名CListCtrlEx,选择基类CWnd(因为没有CListCtrl基类),确定。
找到新类的声明处(.h文件,你可以创建新h/cpp文件,也可以在对话框文件组添加),将基类改成CListCtrl。
GetItemText添加稍微复杂,出了需要添加.h文件的函数声明和你上面代码的函数实体,还需要在AFX_MESSAGE_MAP中添加消息映射,具体你可以找到MFC源代码中CListCtrl源代码参考。追问

找到新类的声明处(.h文件,你可以创建新h/cpp文件,也可以在对话框文件组添加),将基类改成CListCtrl。-------怎么将基类改成CListCtrl呢?

追答

嗨。。。采纳了楼上来问我。
.h文件中,直接改就可以了,MFC基类框架继承,直接CWnd改就ok

追问

http://zhidao.baidu.com/question/710377566295742565.html 重新提一个 之前那个没有看到您的回答。
GetItemText添加稍微复杂,出了需要添加.h文件的函数声明和你上面代码的函数实体,还需要在AFX_MESSAGE_MAP中添加消息映射,具体你可以找到MFC源代码中CListCtrl源代码参考。这一步怎么走??消息映射应该添加什么呢??

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-16
第一 CListCtrlEx应该是个类名,由于你的程序没有全部给出,我看双冒号的,判断是类里面的函数声明,函数体在类外面定义的。
第二 这段代码就是一个函数的实现,只不过不是在类里面,所以你只要把这段代码放在类外面就可以了。
要是不动可以问我。希望对你有用!追问

怎样才能改变,让GetItemText(int nItem, int nSubItem)容下更多的值,其中(int nLen = 212121)可以重新定义容量,方法就是重载GetItemText。但是怎么重载呢?怎样具体的操作才能往程序中添加这串代码:CString CListCtrlEx::GetItemText(int nItem, int nSubItem) ???

追答

你是想增加参数的个数吗?如果是的话,那就直接添加就可以 只不过要从新写函数体 例如
CString CListCtrlEx::GettltemText(int nltem, int nSubltem,int n)
{ “从新写函数体 ” }
是这个意思吗 int n 是新增加的参数

追问

不是~int nLen = BUFSIZ*2;可以定义存储GetItemText获取的值的字符长度,默认值为128,我想把它变大,网上说重载GetItemText函数,然后给了上面的代码,但是我不知道该怎么把这段代码加到程序中。听说是使用classwizard,add class 但是怎么选择 base class呢?

追答

不好意思啊 这个我就不会了!!真是对不起啊 用你这么多的时间!~

本回答被提问者采纳

VC++ MFC CListCtrl 插入大量数据 使用 虚拟 CListCtrl的问题...
既然是自绘,首先当然是重载CListCtrl类,并接管WM_ERASEBKGND消息,去掉默认的处理,改为不处理 BOOL CListCtrlEx::OnEraseBkgnd(CDC* pDC){ \/\/响应WM_ERASEBKGND消息 return false;\/\/屏蔽默认处理 \/\/return CListCtrl::OnEraseBkgnd(pDC);} void CListCtrlEx::OnPaint(){ \/\/响应WM_PAINT消息 CPaintDC d...

VC++中 CListCtr::InsertItem的作用是什么?
该函数有四个重载:int InsertItem(const LVITEM* pItem );int InsertItem(int nItem,LPCTSTR lpszItem );int InsertItem(int nItem,LPCTSTR lpszItem,int nImage );int InsertItem(UINT nMask,int nItem,LPCTSTR lpszItem, UINT nState,UINT nStateMask,int nImage,LPARAM lParam);该函数一般和...

请问VC++6.0中,如何将listcontrol控件中的内容写入到一个文件中?_百度...
那要看你的ListCtrl里面的内容了 如:CListCtrl m_listCtrl;插入的是你自定义的结构或类内容 假设 typedf struct _DEVICE_INFO { int m_nDeviceID;int m_nDeviceIP;}DEVICE_INFO;DEVICE_INFO *device = new DEVICE_INFO;\/\/设置各个值 \/\/插入到列表 m_listCtrl.InsertItem(0,"text"...

vc++6.0编程如何实现这个画面
如果是VC,就麻烦了,首先这肯定是单对话框的基础,先添加菜单栏,这里说的是自己创建菜单栏(不会就参考SDI创建方式),然后那个按钮显示屏,显然就是一个 画图出来的图像,其他文字,底色等都是静态的,(看来不想用第三方也不行了呵呵);下面的数据显示仅仅是ClistCtrl,不过那些底色就要花点技巧了 ...

怎么使用
VC++6.0控件工具箱:2 图形控件(picture):常用于显示位图(Bitmap)和图标(Icon) 3 静态文本(Static Text):用来在指定的位置显示特定的字符串,一般用来标识附近另一个控件的内容。显示在静态文本控件中的字符串一般不再改变,但是在需要的时候,也可以通过调用相应的函数来进行设置。MFC提供了CStatic类支持静态控件。 4...

VC++中CListCtrl如何更改其行高与Header高度?
重载OnMeasureItem 进行自绘制 给你一个例子:void CListCtrlEx::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct){ \/\/ Get the LOGFONT for the current font.LOGFONT lf;::ZeroMemory(&lf, sizeof(lf));CFont* pFont = GetFont();ASSERT_VALID(pFont);if (pFont)VERIFY(pFont->GetLogFont(&...

...消息函数 上下键移动会有滞后性 怎么办?VC++6.0
CListCtrl *pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST);POSITION pos = pListCtrl->GetFirstSelectedItemPosition();if(pos!=NULL){ int iCurSel = pListCtrl->GetNextSelectedItem(pos);if(pLVKeyDow->wVKey==VK_UP){ \/\/按一次UP键选中项会上移一位,但是这个操作是在按下UP键时触发的 \/\/...

VC++外部程序获取ListView控件内容,详细见问题补充,求高手支招啊!_百 ...
你说的CListCtrl?如果这InsertColumn()添加的列标题,添加的内容InsertItem(),和SetItem()\/ SetItemText()函数;InsertColumn()2过载:诠释InsertColumn(NCOL,LPCTSTR lpszColumnHeading,资源回收的事宜= LVCFMT_LEFT,nWidth = -1,nSubItem = -1);诠释InsertColumn(NCOL,常量LVCOLUMN * p...

VC++::InsertItem的作用是什么?
VC++中的InsertItem函数的作用是在列表控件中添加一个新的行项。这个功能非常实用,它提供了多种重载形式以满足不同需求。基本形式是int InsertItem(const LVITEM* pItem),用于传递LVITEM结构体指针来指定插入的详细信息。另一种形式是int InsertItem(int nItem, LPCTSTR pszItem),接受行号和字符串...

vc++6.0执行框里面的字体如何变大,这个太小了。。
右键点击上边框,选择“属性”,然后选择“字体”,然后选择“10×20”

相似回答
大家正在搜