关于item 提取!高手来啊!

jilianfeng 2009-08-08 04:28:45
别人写的一个类!listbox 中 分行分列 写入的数据,数据写入 成功,但是当我提取 某行 的 某一列的数据时却出现了错误。由于没联系上作者,希望大家帮帮忙!我把代码写出来!

CListBoxItem* pListBoxItem = m_listBox.GetListBoxItemData(h);
if ( pListBoxItem == NULL )
{
CListBoxItem* pli = new CListBoxItem;
for (int i = 0; i < 4; i ++)
{

if ( i == 0 )
{
HBITMAP hBmp =(HBITMAP)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP3), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADMAP3DCOLORS);

pli->SetSubItem(i, hBmp, 3, 8, TRUE, (h+1) * 10 + i);


}
else if ( i == 1 )
{
CTextInfo* pTI = pli->CreateTextInfo();
TextItem ti;
ti.m_crText = RGB(0, 0, 0);
ti.m_strText = phinfo;
pTI->AddTextItem(ti);


pli->SetSubItem(i, pTI, TRUE, (h+1)* 10 + i);
}
else if ( i == 2 )
{
HBITMAP hBmp =(HBITMAP)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADMAP3DCOLORS);

pli->SetSubItem(i, hBmp, 3, 8, TRUE, (h+1) * 10 + i);
}
else if ( i == 3)
{
HBITMAP hBmp =(HBITMAP)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP4), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADMAP3DCOLORS);

pli->SetSubItem(i, hBmp, 3, 8, TRUE, (h+1) * 10 + i);
}
}

m_listBox.SetListBoxItemData(h, pli);
这是写入 数据 虽然 有些慢,但是 很成功!然而 我提取 数据的时候
LRESULT CKjysDlg::OnLDblClk(WPARAM wParam, LPARAM lParam)
{
CString str;
str.Format("LDblClk Index : %d ID : %d", (int)wParam, (int)lParam);
TextItem ti;
CListBoxItem* pLi=m_listBox.GetListBoxItemData((int)wParam);
tagListSubItem aa;
CString a;

pLi->GetSubItem((int)lParam, aa);
aa.pTextInfo->GetTextItem(,ti);// 运行到这句 就不能运行了
a=ti.m_strText;

MessageBox(a);
return 0;
}
...全文
110 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jilianfeng 2009-08-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fandh 的回复:]
老规矩,发过来!呵呵
[/Quote] 发了 ,呵呵!谢谢!
fandh 2009-08-08
  • 打赏
  • 举报
回复
老规矩,发过来!呵呵
  • 打赏
  • 举报
回复
MFCGrid
jilianfeng 2009-08-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tr0j4n 的回复:]
这个还是用CListCtrl比较好啊!调整行高不是很容易么?
[/Quote]
我试过了 ,只能调整全部 行的高度,而不能调整某行的高度!据说 很难!
MoXiaoRab 2009-08-08
  • 打赏
  • 举报
回复
这个还是用CListCtrl比较好啊!调整行高不是很容易么?
jilianfeng 2009-08-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fishion 的回复:]
有行有列的话,那还不如用CListCtrl
[/Quote] 不是要那个 自己调整行高么? listctrl 不好弄,所以我才找人写的,你忘了?
fishion 2009-08-08
  • 打赏
  • 举报
回复
有行有列的话,那还不如用CListCtrl
jilianfeng 2009-08-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fishion 的回复:]
什么叫某行某一列
[/Quote] 选中的行 和 列!
fishion 2009-08-08
  • 打赏
  • 举报
回复
什么叫某行某一列
jilianfeng 2009-08-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhuzhenlei 的回复:]
aa.pTextInfo->GetTextItem(,ti);// 运行到这句 就不能运行了
这个逗号是什么格式的方法
[/Quote]
那个前面 有个数字的!弄错了!
jilianfeng 2009-08-08
  • 打赏
  • 举报
回复
我再贴上 控件 源代码!Textinfo.h
#pragma once

#include <vector>

typedef struct tagTextItem
{
CString m_strText;
COLORREF m_crText;
}TextItem;

class CTextInfo
{
public:
CTextInfo(void);
~CTextInfo(void);
void InsertTextItem(int nIndex, TextItem textItem);

void AddTextItem(TextItem textItem);
void Clear();
int GetItemCount();
bool GetTextItem(int nIndex, TextItem& textItem);
int GetTextHeight(CDC* pDC, int nWidth);
CSize DrawText(CDC* pDC, int nLeft, int nTop, int nWidth, int nMaxHeight);
private:
std::vector<TextItem> m_vecTextItem;
};

textinfo.cpp
int  CTextInfo::GetItemCount()
{
return m_vecTextItem.size();
}

bool CTextInfo::GetTextItem(int nIndex, TextItem& textItem)
{
ASSERT ( nIndex >= 0 && nIndex < m_vecTextItem.size() );
textItem = m_vecTextItem[nIndex];
return true;
}
zhuzhenlei 2009-08-08
  • 打赏
  • 举报
回复
aa.pTextInfo->GetTextItem(,ti);// 运行到这句 就不能运行了
这个逗号是什么格式的方法

16,548

社区成员

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

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

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