MFC CListCtrl 内部是如何维护和显示数据的??

图片说明

显示数据的窗口的宽和高是定了的,当点击滚动条下拉的时候,数据就往上一条条显示。
有点类似于MFC中的CListCtrl 但是又不全是。
有没有什么方法 从CWnd继承自己写一个类似于这种界面的效果 求大神指教一下!

1个回答

这个用ListBox就可以实现,https://www.douban.com/note/178901478/

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MFC CListCtrl 内部是如何维护和显示数据的??
![图片说明](https://img-ask.csdn.net/upload/201811/25/1543113188_168544.png)rnrn显示数据的窗口的宽和高是定了的,当点击滚动条下拉的时候,数据就往上一条条显示。rn有点类似于MFC中的CListCtrl 但是又不全是。rn有没有什么方法 从CWnd继承自己写一个类似于这种界面的效果 求大神指教一下!
CString内部是如何维护数据的
CString fun()rnrn CString s = "111";rn return s;rnrnrn在主函数中CString str=fun();发现返回的只是一个指针,并没有把函数中的字符串拷贝到主函数str指向的内存空间中,而只是把fun()函数返回的指针赋值给了str内部的指针。rnrn所以我搞不懂的就是fun函数中的局部变量应该在我函数调用结束后就被释放了,如果只返回指针,那是不是意味着,这个指针指向的内存随时都可能被其他函数所修改掉rnrn如果不是像我想的这样,那CString内部是怎么来维护这个指针的,怎么保证局部变量不被释放,又或者说我的想法是对的。
CListCtrl下如何显示数据?
用insertcolumn插入了三列,怎样显示行啊?rn insertitem怎么用?rn3x
MFC clistctrl如何显示excel?
如题 求助呀rn
CListCtrl显示数据
ClistCtrl显示数据有vc和vs2005的示例
CListCtrl~显示数据~滚动条~
我想用CListCtrl一行一行读取数据,现在已经能够读取,并且用ensurevisible使滚动条跟踪最后一行数据,并且保持滚动条在最下端。rn 现在我希望通过使用Sleep()函数,使数据读取文档各行的时候,间隔一定的时间,这样,我在CListCtrl中就能实时观察到显示一行数据之后,过一会又显示下一行,问题是实现的时候,CListCtrl中看不到任何数据,只能看到旁边的滚动条一直保持在最下端,并且不断变短,当所有行读取完成之后才在CListCtrl中将数据一并显示出来。rn 请教这是为啥,要如何实现我的想法呢?
CListCtrl数据显示问题
在一个Dialog Based 应用程序中,我想进行如下操作应该怎么办rn在主窗体中有一个CList Ctrl控件(Report)->对应变量m_list1,有两个按钮,BUTTON1,BUTTON2,单击BUTTON1,则在m_list1中显示从数据库中导出 的数据,比如说这条记录有三列,COLUMN0,COLUNM1和COLUMN2,那我现在想单击BUTTON2,显示另一个对话框,里面也有一个CList Ctrl控件(Report)->对应变量m_list2,这个控件显示的数据为一列(直接从数据库中读出),我想单击其中的一条记录后按确认按钮就修改主窗体中记录的第二列,应该怎么做rn说得有点乱了rn
CListCtrl的MFC源文件是哪一个?
我想在CWnd上派生一个类,想参考一下CListCtrl,头文件是AfxCMN.h,可是代码部分在什么地方?帮忙,谢谢。
MFC之CListCtrl删除一行数据
void thirdlyDlg::OnBnClickedButton3Delete() { // TODO: 在此添加控件通知处理程序代码 POSITION pos = m_oListScore.GetFirstSelectedItemPosition(); int idx = m_oListScore.GetNextSelectedItem(pos); while (idx != -1)...
mfc CListCtrl分页显示数据库数据
由于工程比较大,抽出部分代码。 1、下面是查询数据库: m_strQuerySql = GetQuerySql();//"select * from if (m_strQuerySql == "") { return; } _RecordsetPtr pRes = NULL; pRes = DBManager::getInstance().QueryOracleData(
MFC多文档CListCtrl数据消失
MFC打开多文档时,其他打开的表的数据会出现消失,rn消失的是相应的正在编辑的表格对应的相同位置的数据。rn请问该怎么办?rnrn有效的可以追加分数
如何直接修改clistctrl中显示的数据?
我用clistctrl显示sqlserver数据表的内容,请问如何在clistctrl中直接修改数据,并将修改后的内容返回到数据表中。
mfc clistctrl
mfc clistctrl mfc clistctrlmfc clistctrl
web开发时,数据库的数据是如何维护的!
如题!
CListCtrl如何分页显示数据?
最好有现成的例子
MFC 单文档如何使用CListCtrl
MFC 单文档如何使用CListCtrl,比如工程为Test,我在TestView头文件中声明CListCtrl *m_list,然后重载OnCreate方法,然后再OnCreate方法中添加rn[code=C/C++]rn m_list->Create(WS_CHILD|WS_VISIBLE|LVS_REPORT,CRect(1,1,1,1),this,1);rn m_list->SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);rn m_list->SetBkColor(RGB(247,247,255));rn m_list->SetTextColor(RGB(0,0,255));rn m_list->SetTextBkColor(RGB(247,247,255));rn m_list->InsertColumn(0, "学号", LVCFMT_LEFT, 110);rn m_list->InsertColumn(1, "姓名", LVCFMT_LEFT, 130);rn m_list->InsertColumn(2, "成绩", LVCFMT_LEFT, 47);rn[/code]rn但是运行后没有看到List
CListCtrl怎样显示数据啊?
摸不着头脑,!~~~~
ClistCtrl 不显示数据 急!
我在做一个mfc 程序 但是 向 ClistCtrl 中插入 数据时 怎么都不显示 啊 rn代码如下:rn输出栏 oncreate:rnint COutputBar::OnCreate(LPCREATESTRUCT lpCreateStruct) rnrn if (CBCGPDockingControlBar::OnCreate(lpCreateStruct) == -1)rn return -1;rn rn CRect rectDummy;rn rectDummy.SetRectEmpty ();rnrn // Create tabs window:rn if (!m_wndTabs.Create (CBCGPTabWnd::STYLE_FLAT, rectDummy, this, 1))rn rn TRACE0("Failed to create output tab window\n");rn return -1; // fail to creatern rn m_wndTabs.SetFlatFrame (FALSE, FALSE);rnrn // Create list windows.rn // TODO: create your own window here:rn const DWORD dwViewStyle = rn WS_CHILD | WS_VISIBLE|WS_BORDER|LVS_REPORT;rnrn // ClistCtrl 控件的 create 函数, m_wndList1 为DavinciListCtrl类型 派生自ClistCtrl rnrn if (!m_wndList1.Create (dwViewStyle, rectDummy, &m_wndTabs, 2))rnrn rn TRACE0("Failed to create output view\n");rn return -1; // fail to creatern rnrn // Attach list windows to tab:rn m_wndTabs.AddTab (&m_wndList1, _T("所有告警"), -1);rn m_wndList1.DisplayTable();rn rnrn return 0;rnrnrn显示 数据 函数:rnvoid DavinciListCtrl::DisplayTable()rnrn InsertColumn(0, _T("告警序号"));rn SetColumnWidth(0, 60);rn InsertColumn(1, _T("告警等级"));rn SetColumnWidth(1, 80);rn InsertColumn(2, _T("告警地点"));rn SetColumnWidth(2, 80);rn InsertColumn(3, _T("设备类型"));rn SetColumnWidth(3, 150);rn InsertColumn(4, _T("故障编号"));rn SetColumnWidth(4, 100);rn InsertColumn(5, _T("告警现象描述"));rn SetColumnWidth(5, 200);rn InsertColumn(6, _T("发生时间"));rn SetColumnWidth(6, 150);rn InsertColumn(7, _T("最近状态"));rn SetColumnWidth(7, 120);rn int nItem=InsertItem(0,"insert");rn this->SetItemText(0,0,"seq");rn this->SetItemText(0,1,"lev");rn this->SetItemText(0,2,"loc");rn this->SetItemText(0,3,"type");rn this->SetItemText(0,4,"code");rn this->SetItemText(0,5,"discri");rn this->SetItemText(0,6,"time");rn this->SetItemText(0,7,"status");rn this->SetItemData(0,5);rn SendMessage (LVM_SETEXTENDEDLISTVIEWSTYLE, 0,rn LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES);rn if (GetSafeHwnd () != NULL)rn rn RedrawWindow ();rn rn return;rnrnrn不知道怎么回事 请高手 指教啊 谢谢 !
如何控制右单击是在CLISTCTRL控件内部
怎样在右单击了CListCtrl控件后,弹出的对话框在调用主窗口的函数。
MFC的CListCtrl怎么用,我的为什么显示是这样?
由于不知为什么上传不了图,所以我引用开源中国的地址。nhttp://www.oschina.net/question/2301545_2134767
MFC CListCtrl smallicon 风格 虚拟列表不能显示数据
如题,我做的一个虚拟列表,但是不能显示数据,没有找到问题出在哪里,求助。rn以下是我的代码rn--------------------------------------------------------rn#pragma oncern#include "afxcmn.h"rnrnclass CMyListView : public CMFCListCtrlrnrnpublic:rn CMyListView(void);rn virtual ~CMyListView(void);rnrnprotected:rn DECLARE_MESSAGE_MAP()rn afx_msg void OnLvnGetdispinfo(NMHDR *pNMHDR, LRESULT *pResult);rnrnpublic:rn void Init();rn void Insert(const std::vector &vctData);rnrnprivate:rn void InitImageList();rnrnprivate:rn CImageList m_imagelist;rn std::vector m_vctData;rn;rnrn//-----------------------.cpp文件 ----------------------------rn#include "StdAfx.h"rn#include "MyListView.h"rn#include "resource.h"rnrnCMyListView::CMyListView(void)rnrnrnrnCMyListView::~CMyListView(void)rnrnrnrnvoid CMyListView::Init()rnrn InitImageList();rnrnrnvoid CMyListView::InitImageList()rnrn CBitmap *pMask = NULL;rnrn CBitmap bitmap;rn bitmap.LoadBitmap(IDB_BITMAP_PREVIEW);rnrn m_imagelist.Create(16,16, ILC_COLOR32|ILC_MASK, 1, 1);rn m_imagelist.Add(&bitmap, pMask);rnrn m_imagelist.SetImageCount(1);rnrn SetImageList(&m_imagelist, LVSIL_SMALL);rnrnrnvoid CMyListView::Insert(const std::vector &vctData)rnrn m_vctData.clear();rn m_vctData = vctData;rnrn DeleteAllItems();rn SetItemCount((int)m_vctData.size());rnrnrnBEGIN_MESSAGE_MAP(CMyListView, CMFCListCtrl)rn ON_NOTIFY_REFLECT(LVN_GETDISPINFO, &CMyListView::OnLvnGetdispinfo)rnEND_MESSAGE_MAP()rnrnrnvoid CMyListView::OnLvnGetdispinfo(NMHDR *pNMHDR, LRESULT *pResult)rnrn NMLVDISPINFO *pDispInfo = reinterpret_cast(pNMHDR);rn // TODO: Add your control notification handler code herern *pResult = 0;rnrn if(NULL == pDispInfo)rn return;rnrn LVITEM item = pDispInfo->item;rn int nItem = item.iItem;rn const CString &strItemText = m_vctData[nItem];rnrn if(LVIF_TEXT == item.mask)rn rn _tcsncpy_s(item.pszText, strItemText.GetLength()+1, strItemText, item.cchTextMax);rn rnrn if(LVIF_IMAGE == item.mask)rn rn item.iImage = 0;rn rnrnrn//------------------------------ 以下是调用代码 --------rnCMyListView m_litctrl; //CListViewDlg 成员变量rnrnBOOL CListViewDlg::OnInitDialog()rnrn CDialogEx::OnInitDialog();rnrn // TODO: Add extra initialization herernrn m_litctrl.Init();rnrn vector vctDataTemp;rnrn CString strItemText;rn for (int nIndex=0; nIndex<10; nIndex++)rn rn strItemText.Format(_T("Test item - %d"), nIndex+1);rn vctDataTemp.push_back(strItemText);rn rnrn m_litctrl.Insert(vctDataTemp);rnrn return TRUE; // return TRUE unless you set the focus to a controlrn // EXCEPTION: OCX Property Pages should return FALSErn
MFC 图像/数据是怎么显示的
当一个窗口客户区显示几百行数据的时候,所有数据的高度就超出了窗口的高度。rn下拉滚动条时能让显示的数据一个像素一个像素的往上移动。 可以只显示某个字的一部分.rn如下图效果rn![图片说明](https://img-ask.csdn.net/upload/201812/01/1543671226_768571.png)rnrn猜测数据可能在一块逻辑的坐标区域中画好了, 滚动条的值和逻辑坐标的宽度相关联,当滚动条每次移动一个单位,就将窗口的坐标相对于逻辑坐标移动一个单位。然后拷贝内存中这块区域中的值到窗口中。有点像扫描仪在一块画布上面上下移动这样子,不知道这种想法对不对。如果不对 求大神指教!。 如果是对的 请求大神帮我捋一捋 具体怎么实现!
MFC中CListCtrl控件显示数据库信息
while(!rs.IsEOF())rn rn // m_ListCtrl.AddString()rn CString varname;rn CString varphone;rn CString varemail;rn for(int i = 0 ; i
MFC CListCtrl Icon视图时的显示问题
CListCtrl在icon视图下,如何让其竖直显示,并且图标文字居中呢?rn我没有找到垂直居中的属性,图标文字显示都偏左,导致部分文字看不见,望懂的人给个解决办法,谢谢~
MFC CListCtrl 绑定到 对象中的数据
例如 我有一个类如下rnclass Peoplernrnint m_Index;rnCString m_Name;rnCString m_Sex;rnint m_Age;rnCString m_Birthday;rn;rnrnrnCListCtrl需要显示的是3列rn姓名 性别 年龄rnrnlist m_PeopleList 有 10个数据rnrn我该如何 把 m_PeopleList 数据显示到 CListCtrlrnrn并且 当我点击 任何一行的时候, 可以得到 该行 所对应的对象指针rnrn谁能给我点思路?rnrn是用 CListCtrl::InsertItem(LVITEMA *pItem) 这个函数去完成吗? 如果是的话, 该怎么把 姓名,性别,年龄绑定到CListCtrl中了?rnrn
MFC内部如何产生对话框
我知道可以通过MFC AppWizard->Dialog Based直接创建一个对话框资源rn但是我想知道MFC内部产生对话框的代码和步骤!rn产生对话框不用像产生窗口一样创建一个对象,然后注册吗??它和CWinApp如何联系起来的rn请各位给个详细解释
MFC CListCtrl虚表读取Sqlite数据
虚拟列表等三种读取Sqlite数据的方法比较,七万多条数据,虚拟列表的优势还是另外两种难以匹敌的。
请问CListCtrl是如何实现的?
我看CListCtrl是从CWnd继承的,我想实现一个可以放置一些控件到上边的容器控件,请问如何实现?
CListCtrl 显示
我的一个项目工程里面用好很多可CListCtrl控件。。rn可是这个控件我遇到了一个问题。rnrn我控初始化都都可以用了。。rn就是点击一次后,我拿别外一个窗口把它覆盖了然后移天,会发现,List控没有刷新出来。没掉了。不过不是真的没掉了,只是显示不知道,这个是怎么回事,rn请大家帮帮忙。。看有没有解决的方法rn
CListCtrl中: 数据如何显示出来
请教一个问题:rn 我想在主窗口的List控件中按如下格式显示数据,初始化窗口代码如下,调试运行没问题,但运行出来的结果却是空白,看不到如下格式,与没添加前一样。请高手为我解惑,谢谢!(在线等待中...)rnBOOL CDlgMain::OnInitDialog() rnrn CDialog::OnInitDialog();rn rn // TODO: Add extra initialization herern SetIcon(m_hIcon, TRUE);// Set big iconrn SetIcon(m_hIcon, FALSE);// Set small iconrn m_list.ModifyStyle(0, LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL);rn m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP);rn m_list.InsertColumn(0,"编号", LVCFMT_LEFT,70);rn m_list.InsertColumn(1,"日期", LVCFMT_LEFT,200);rn m_list.InsertColumn(2,"用户编号", LVCFMT_LEFT,70);rn m_list.InsertColumn(3,"用户名称", LVCFMT_LEFT,100);rn m_list.InsertColumn(4,"内容", LVCFMT_LEFT,300); rn return TRUE; rn
如何实现CListCtrl 数据自动保存?
如题!
求 clistctrl大图标 内部拖动
如题,实现clistctrl图标内部拖动,就像是资源管理器的图标模式
mfc界面如何显示数据求解
请问怎么将从文件读取的数据显示在界面一个窗口上,数据有多行~急急急
MFC中对于数据改如何显示?
rnrn突然觉得 在mfc里面的整数、字符如何去显示的问题?
mfc 编辑框如何显示一组数据
我现在在做一个基数排序的课设,我遇到的问题是把一组关键字分配好之后要在相应的编辑框中显示出来,我已经写好了基数排序分配收集的函数 ,以前都是在控制台中做的 现在在MFC中做 就不知道怎么显示了,我只会在一个编辑框中显示一个数 ,不知道怎么显示一组数据,求各位指导下,
MFC自绘制CListCtrl
用mfc绘制的CListCtrl控件,非常简单实用,使用了HeaderCtrl子类,界面很全面,就是里面的图片是我自己画的,使用者可以根据自己情况修改。
MFC 自绘CListCtrl 列表框控件
在CSkinList基础上整理了代码 修改部分:check图标改为自绘 下拉框滑块部分由加载位图改为自绘 说明:可自由修改背景色、文本色 文本大小 行列大小、去掉标题栏等操作 能直接运用到工程 待完善: 0、列排序; 1、控件要手动去除border 否则会有边框阴影 代码中调用modifystyle去除无效 原因不明 2、含check属性时 拖动滑块 自绘check图标界面有问题 未见刷新? 3、滑块宽高度自适应
MFC 中 CListCtrl 的问题
自绘了一个ListCtrl,基类是CListCtrl,正常情况下是这样的rn[img=https://img-bbs.csdn.net/upload/201412/09/1418112939_221092.jpg][/img]rn行使价=1000是第一行rn然后不知道怎么就出现了下面这种问题,第一行只能漏出一点点,但是滚动条已经到最顶上了,不能再往上滚动了rnrn[img=https://img-bbs.csdn.net/upload/201412/09/1418113076_585868.jpg][/img]rnrn要用鼠标在那漏出的一点点上单击一下,第一行才能刷新出来rn[img=https://img-bbs.csdn.net/upload/201412/09/1418113148_738317.jpg][/img]rnrn第一行刷新出来之后,表头与表格之间就出来一条缝隙,好大一条缝隙啊rn[img=https://img-bbs.csdn.net/upload/201412/09/1418113249_283925.jpg][/img]rnrn[img=https://img-bbs.csdn.net/upload/201412/09/1418113284_854089.jpg][/img]rnrn然后将滚动条往下滚动,再滚到最顶时,第一行又只能漏一点点了rn[img=https://img-bbs.csdn.net/upload/201412/09/1418113076_585868.jpg][/img]rnrn这是咋回事??????大神带我飞啊rnrn发送重绘消息的函数rn[code=c]rnLRESULT ClistctrlOptions::OnMyRedrawItem( WPARAM item, LPARAM subitem ) //根据情况 发出重绘item 信号rnrn if( item == 0xFFFFFFFE) // if item = -2, redraw whole list control 重绘整个list controlrn rn Invalidate(FALSE);rn rn if( item==0xffffffff ) // item<0, mean redraw items[0,subitem] 重绘items[0,subitem] rn rn RedrawItems( 0, subitem );rn rn elsern if( subitem==0xffffffff ) // subItem<0, mean Update item's all subitem. 重绘items[subitem,subitem] rn rn RedrawItems( item, item ); rn rn elsern rn if( subitem>=0 && subitem=0 )rn rn CRect rect ;rn if( GetSubItemRect( item, refrectsubitem, LVIR_LABEL, rect )==TRUE )rn rn rect.left++ ;rn rect.right-- ;rn rect.top++ ;rn rect.bottom-- ;rn InvalidateRect( rect, FALSE ); // only update subitem, no need clear bgn.rn rn rn rn rn rn rn return 0;rnrn[/code]rnrnrn重绘函数(代码已简化,将那些设置颜色啥的代码都去掉了)rn[code=c]rnvoid ClistctrlOptions::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) //重绘函数rnrnrn LPDRAWITEMSTRUCT lpDIS = lpDrawItemStruct;rn int nItem=lpDIS->itemID; //将要重绘的行值rn if(nItem == -1) rn return ; rn CRect rcCol = lpDIS->rcItem; //这行的位置rnrn CString sText; rn CDC* pDC=CDC::FromHandle(lpDIS->hDC); rn int nOldDCMode=pDC->SaveDC(); rn rn LVITEM item;rn item.iItem = nItem;rn item.iSubItem = 0; rn item.mask = LVIF_IMAGE|LVIF_STATE; rn item.stateMask = 0XFFFF; rn GetItem(&item); rn rn rn rn ListView_SetExtendedListViewStyle(this->m_hWnd, this->GetStyle() & ~LVS_EX_GRIDLINES);//不显示网格线rn rn rn LV_COLUMN lvc;rn lvc.mask=LVCF_FMT|LVCF_WIDTH;rnrnrn rcCol.right = rcCol.left; rn for(int nCol=0; GetColumn(nCol,&lvc); nCol++)rn rn rcCol.left = rcCol.right; rn rcCol.right = rcCol.left + GetColumnWidth(nCol); rn rn rn ::Rectangle(lpDIS->hDC, rcCol.left-1, rcCol.top-1 , rcCol.right , rcCol.bottom );rn rn rn pDC->DrawText(sText, -1, CRect::CRect(rcCol.left+3,rcCol.top,rcCol.right,rcCol.bottom-2), DT_RIGHT); rn rn pDC->RestoreDC(nOldDCMode); rn rnrn[/code]
路由器是如何维护路由表的?
路由器是如何维护路由表的?
MFC控件使用总结——CListCtrl
CListCtrl介绍,适合初学者对此空间有第一印象的资料
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法