barriers / 阅读 / 详情

如何用SendMessage函数添加数据到ListView中

2023-07-20 21:51:00
共1条回复
陶小凡

如果需要C#版的,可以看下我之前写的:C#如何获取其他程序ListView控件中的内容

获取其他进程的数据需要使用到以下几个函数:

VirtualAllocEx()

VirtualFreeEx()

WriteProcessMemory()

ReadProcessMemory()

以获取任务管理器中的进程列表为例,运行结果如下:

关键代码

HANDLE hProcess;

LVITEM *pointer;

HWND hwnd,hListview;

int headerhwnd; //listview控件的列头句柄

int rows,cols; //listview控件中的行列数

DWORD ProcessID = NULL;

DWORD ThreadID = NULL;

hwnd = (HWND)::FindWindow(_T("#32770") , _T("Windows 任务管理器"));

hwnd = (HWND)::FindWindowEx(hwnd, 0, _T("#32770") , NULL );

//进程界面窗口的句柄,通过SPY获取

hListview = (HWND)::FindWindowEx(hwnd, 0, _T("SysListView32") , NULL );

//listview的列头句柄

headerhwnd = ::SendMessage(hListview, LVM_GETHEADER, 0, 0);

//总行数:进程的数量

rows = ::SendMessage(hListview,LVM_GETITEMCOUNT,0,0);

//列表列数

cols = ::SendMessage(hListview, HDM_GETITEMCOUNT,0,0);

ThreadID = GetWindowThreadProcessId(hListview,&ProcessID);

//打开并插入进程

hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE,ProcessID);

//申请代码的内存区

pointer = (LVITEM*)VirtualAllocEx(hProcess,NULL, sizeof(LVITEM),MEM_COMMIT, PAGE_READWRITE);

for (int i = 0; i < rows;i++ )

{

m_ProcessList.InsertItem(i,_T(""));

for (int j = 0; j < cols;j++ )

{

LVITEM vItem;

vItem.mask = LVIF_TEXT; //说明pszText是有效的

vItem.iItem = i; //行号

vItem.iSubItem = j; //列号

vItem.cchTextMax = 512; //所能存储的最大的文本为256字节

LPWSTR pItem = NULL;

//申请内存空间

pItem = (LPWSTR)VirtualAllocEx(hProcess, NULL, 512, MEM_COMMIT, PAGE_READWRITE);

vItem.pszText = pItem;

WriteProcessMemory( hProcess , pointer , &vItem , sizeof(LVITEM),NULL);

::SendMessage(hListview, LVM_GETITEMW,(WPARAM)i,(LPARAM)pointer);

char ItemBuf[512];

memset(ItemBuf,0,512);

ReadProcessMemory(hProcess, pItem, ItemBuf, 512, NULL);

CString str;

str.Format(_T("%s"),ItemBuf);

m_ProcessList.SetItemText(i,j,str);

//释放内存空间

VirtualFreeEx(hProcess, pItem, 0, MEM_RELEASE);

}

}

//释放内存空间

VirtualFreeEx(hProcess, pointer, 0, MEM_RELEASE);//在其它进程中释放申请的虚拟内存空间,MEM_RELEASE方式很彻底,完全回收

CloseHandle(hProcess);//关闭打开的进程对象

相关推荐

InsertItem怎么用

nSelectedImageIndex of the item"s selected image in the tree view control"s image list.hParentHandle of the inserted item"s parent.详见msdn
2023-07-20 19:54:463

VC++中 CListCtr::InsertItem的作用是什么?

楼上只给了代码没理论,我再随便说说吧,insertitem插入一项,我来讲下2参数那个,第二参数填写了item的第一字段,第一参数的nitem就是用来做比较用的,主要是判断是插在前还是插到后边
2023-07-20 19:54:543

求助,关于CListCtrl::InsertItem函数的参数

一般用InsertItem(0, "", 0);就可以了. 然后再用SetItemText(0, nID, szContent)
2023-07-20 19:55:023

insertitem

在list控件里面插入一个新行,怎样算详细啊?MSDN里的函数原型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 );给你个例子。。。m_list.InsertColumn(0,"Col 1"); m_list.InsertColumn(1,"Col 2"); m_list.InsertColumn(2,"Col 3"); m_list.InsertColumn(3,"Col 4"); m_list.InsertItem(0,"row1",0); CString stemp =""; for(int i =0;i<4;i++) { stemp.Format("row 0 %d",i); m_list.SetItemText(0,i,stemp); } m_list.InsertItem(0,"row befor prev",0); m_list.InsertItem(2,"row after prev",0);注意InsertItem的第一个参数结果因该是这样的row befor prevrow1 row01 row02 row03 row04row after prev
2023-07-20 19:55:142

powerbuilder控件TreeView中的insertitem函数怎么用的

//简单示例如下:treeviewitem ltviltvi.children=false//设置节点是否有子节点ltvi.data= "mydata"//设置节点的数据ltvi.label= "mylabel"//设置节点的文本long item_pos//节点要插入的位置,如果想在根节点下插入,设置0即可tv_1.insertitemlast(item_pos,ltvi)//这个的返回值就是插入好的节点的位置,如果要在这个节点下继续插入节点,让item_pos再等于这个的返回值,再继续插入。
2023-07-20 19:55:231

VC6.0中基于对话框的MFC EXE中的Tab Control控件如何使用???

楼主算是问对人了,我刚做完一个。步骤:1.新建一个以cformview作为基类的单文档;2.将tab控件拖拽至你需要的位置3.在视图类的oninitialupdate()(需要重载)中添加初始化代码4.重载onsize()以调整tab控件的大小5.在视图类中重载ontcnselchangetab1(nmhdr*pnmhdr,lresult*presult)函数以响应tab控件切换。不懂再追问!
2023-07-20 19:55:302

如何给tab控件的每一个标签加上图标

先设置图像列表:CTabCtrl::SetImageList然后在InsertItem时指定图标索引就可以了.CTabCtrl::InsertItemBOOLInsertItem(intnItem,TC_ITEM*pTabCtrlItem);BOOLInsertItem(intnItem,LPCTSTRlpszItem);BOOLInsertItem(intnItem,LPCTSTRlpszItem,intnImage);BOOLInsertItem(UINTnMaskintnItem,LPCTSTRlpszItem,intnImage,LPARAMlParam);不过,虽然加了图标,但和的显示还是不一样的,要想更接近那样的,必须自绘.
2023-07-20 19:55:371

CListCtrl控件的InsertItem问题

相当于在表格里增加一行,它的内容是第一列。
2023-07-20 19:55:441

列表控件(CListCtrl) 是否可自行增加项?? 在最后的一行是否 可自行添加?

可以的。
2023-07-20 19:55:513

c++中tab怎么用

没有明白你啥意思?
2023-07-20 19:56:013

vs2010,mfc编程中,遇到 1 IntelliSense: 没有与参数列表匹配的 重载函数 "CTreeCtrl::InsertItem" 实例

m_treeAdapater.InsertItem(m_pDev->name,root, NULL);就可以.这种问题你百度InsertItem就知道这个函数没有2个参数的用法
2023-07-20 19:56:191

VC++外部程序获取ListView控件内容,详细见问题补充,求高手支招啊!

你说的CListCtrl? 如果这InsertColumn()添加的列标题,添加的内容InsertItem(),和SetItem()/ SetItemText()函数; InsertColumn()2过载: 诠释InsertColumn(NCOL,LPCTSTR lpszColumnHeading,资源回收的事宜= LVCFMT_LEFT,nWidth = -1,nSubItem = -1); 诠释InsertColumn(NCOL,常量LVCOLUMN * pColumn) InsertItem()有三个重载:诠释InsertItem(const字段LVITEM * pItem); 诠释InsertItem(nItem项,LPCTSTR lpszItem); >诠释InsertItem(nItem项,LPCTSTR lpszItem,INT n影像);
2023-07-20 19:56:261

C++ Qt| 在QListWidget请问怎么添加把item到最前面?

你是不是在做音乐播放器?
2023-07-20 19:56:342

MFC中列表控件怎么插入整形的数据,用InsertItem和SetItemText都提示类型错误,该怎么改?

CSstring item.Format("%d", i);m_ctllist.InsertItem(i,item, i);
2023-07-20 19:56:412

关于clistctrl InsertItem 的排序问题

要么在SortItems排序,要么就只能让他自己来了
2023-07-20 19:56:493

CTreeCtrl::GetItemData()的用法,返回值

m_Root = m_TreeList.InsertItem(_T("粗计划"));m_TreeList.SetItemData(m_Root,这个地方写上值);也就是说,你在InsertItem的时候,要给这个节点先设置Data值,以后才能获取到,否则你只能获取到Text值。还有,你说获取到的那个0不是根节点值,只是因为你所有节点都没有设置值不知道我说的够明白不
2023-07-20 19:57:041

SetItemText函数各参数的含义是什么,希望能详细介绍

要先用InsertItem插入一个item,再用SetItemText才有效
2023-07-20 19:57:142

MFC TabCtrl控件 InsertItem功能运行时报错的问题

CTabCtrl m_tab最好不要声明为局部变量,还有可以单步跟踪调试一下。
2023-07-20 19:57:211

VC++中怎样在指定的TreeCtrl节点中添加子节点?

HTREEITEM InsertItem( LPCTSTR lpszItem,HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST );HTREEITEM InsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);这两个函数都可以使用。区别是一个有图标一个没图标最后一个参数可以不使用。主要是hParent 要填对就OK了。这是我用过的一个初始化函数,供参考void CTree::OnInitialUpdate(){CTreeView::OnInitialUpdate();m_pTree = &GetTreeCtrl(); m_pTree->ModifyStyle(0, TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS);m_pImageList = new CImageList(); // 树子节点的图标CWinApp* pApp=AfxGetApp();m_pImageList->Create(32,32,ILC_COLOR8|ILC_MASK,3,3);m_pImageList->Add(pApp->LoadIcon(IDI_ComputerOff));m_pImageList->Add(pApp->LoadIcon(IDI_ComputerOn));m_pImageList->Add(pApp->LoadIcon(IDI_Video));m_pTree->SetImageList(m_pImageList, TVSIL_NORMAL);m_hRoot = m_pTree->InsertItem(_T("IPTV"),0,0);m_pTree->SetItemImage(m_hRoot,1,0);m_hCh1=m_pTree->InsertItem(_T("Channel1"),0,0,m_hRoot);m_pTree->SetItemImage(m_hCh1,2,2);m_hCh2=m_pTree->InsertItem(_T("Channel2"),0,0,m_hRoot);m_pTree->SetItemImage(m_hCh2,2,2);m_hCh3=m_pTree->InsertItem(_T("Channel3"),0,0,m_hRoot);m_pTree->SetItemImage(m_hCh3,2,2);}
2023-07-20 19:57:282

用c语言编写电子英汉词典。

没那么容易,单是一个字典文件就是个问题其次还有字典解析什么的。。呵呵。美女似乎都很讨厌程序。。
2023-07-20 19:57:383

能详细帮我解释一下吗?谢谢!

取得当前的list控件,然后想list的末尾添加一个项目。CListCtrl的说明:构造函数CListCtrl类的成员构造函数ClistCtrl构造一个CListCtrl对象。Create创建列表控件并将其附加给CListCtrl对象。属性GetBkColor获取列表视图控件的背景色。SetBkColor设置列表视图控件的背景色。GetImageList获取用于绘制列表视图项的图象列表的句柄。SetImageList指定一个图象列表到列表视图控件。GetItemCount获取列表视图控件中的项的数量。GetItem获取列表视图项的属性。GetCallbackMask获取列表视图控件的回调掩码。SetCallbackMask设置列表视图控件的回调掩码。GetNextItem查找指定特性和指定指定项关系的列表视图项。GetFirstSelectedItemPosition在列表视图控件中获取第一个选择的列表视图项的位置。GetNextSelectedItem为重复而获取下一个选择的列表视图。GetItemRect获取项的有界矩形。SetItemPosition在列表视图控件中移动一项到指定位置。GetItemPosition获取列表视图项的位置。GetStringWidth指定需要显示所有指定字符串的最小列宽。GetEditControl获取用于编辑一个项文本的编辑控件的句柄。GetColumn获取控件的列的属性。SetColumn设置列表视图列的属性。GetColumnWidth获取报表视图或列表视图中的列的宽度。SetColumnWidth改变报表视图或列表视图中的列的宽度。GetCheck获取与某项相关的状态图象的当前显示状态。SetCheck设置与某项相关的状态图象的当前显示状态。GetViewRect获取列表视图控件中所有项的有界矩形。GetTextColor获取列表视图控件的文本颜色。SetTextColor设置列表视图控件的文本颜色。GetTextBkColor获取列表视图控件的文本背景色。SetTextBkColor设置列表视图控件的文本背景色。GetTopIndex获取最高级项的索引。GetCountPerPage计算可正好垂直放入列表视图控件中的项的数目。GetOrigin获取列表视图控件的最初的当前视图。SetItemState改变列表视图控件的项的状态。GetItemState获取列表视图控件的项的状态。GetItemText获取列表视图项或子项的文本。SetItemText设置列表视图项或子项的文本。SetItemCount准备一个列表视图控件以添加大量的项。GetItemData获取与某项相关的应用所指定的值。SetItemData设置项的应用指定的值。GetSelectedCount获取列表视图控件中选择项的数量。SetColumnOrderArray设置列表视图控件的列序(左或右)。GetColumnOrderArray获取列表视图控件的列序(左或右)。SetIconSpacing设置列表视图控件中的图标的距离。GetHeaderCtrl获取列表视图控件的标题控件。GetHotCursor获取在热调试对列表视图控件有效时使用的游标。SetHotCursor设置在热调试对列表视图控件有效时使用的游标。GetSubItemRect获取列表视图控件中某项的有界矩形。GetHotItem获取当前在游标下的列表视图项。SetHotItem设置列表视图控件的当前热项。GetSelectionMark获取列表视图控件的选择屏蔽。SetSelectionMark设置列表视图控件的选择屏蔽。GetExtendedStyle获取列表视图控件的当前扩展风格。SetExtendedStyle设置列表视图控件的当前扩展风格。SubItemHitTest指定哪个列表视图项在指定位置。GetWorkAreas获取列表视图控件的当前工作区。GetNumberOfWorkAreas获取列表视图控件的当前工作区数量。SetItemCountEx设置虚列表视图控件的项的数量。SetWorkAreas设置列表视图控件中图标可以显示的区域。ApproximateViewRect指定显示列表视图控件项所需的宽度和高度。GetBkImage获取列表视图控件的当前背景图象。SetBkImage设置列表视图控件的当前背景图象。GetHoverTime获取列表视图控件的当前逗留时间。SetHoverTime设置列表视图控件的当前逗留时间。操作InsertItem在列表视图控件中插入一个新项。DeleteItem从控件中删除一项。DeleteAllItems从控件中删除所有项。FindItem查找具有指定的字符的列表视图项。SortItems使用应用定义的比较函数排序列表视图项。HitTest指定哪个列表视图在指定的位置上。EnsureVisible保证项是可见的。Scroll滚动列表视图控件的内容。ReDrawItems强迫列表视图控件刷新一些项。Update强迫控件刷新一个指定的项。Arrange调整一栏里的项。EditLabel开始项文本该处编辑。InsertColumn插入列表视图控件中的新列。DeleteColumn从列表视图控件中删除一列。CreateDragImage为指定的项构造一个拖动图象列表。
2023-07-20 19:58:151

Java 添加二级菜单

import java.awt.*;import javax.swing.*;public class ErjiMenu extends JFrame{ JPanel jp=new JPanel(); JMenuBar menubar=new JMenuBar(); JMenu m1=new JMenu("菜单"); JMenu m2=new JMenu("菜单"); JMenuItem item1=new JMenuItem("菜单项"); JMenuItem item2=new JMenuItem("菜单项1"); JMenuItem item3=new JMenuItem("菜单项2"); public ErjiMenu() { jp.setLayout(new BorderLayout()); m2.add(item2); //m2添加菜单项。 m2.add(item3); m1.add(item1); m1.add(m2); //m1把m2添加进去,作为二级菜单. menubar.add(m1); jp.add(menubar,BorderLayout.NORTH); this.add(jp); this.setBounds(100,100,380,200); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new ErjiMenu(); }} 不用JPopupMenu,更简单。
2023-07-20 19:58:251

CListCtrl无法动态添加数据,即不能用setitemtext()添加

应该换一下顺序吧:setlist(); //这里添加了数据 CListCtrl& theCtrl=GetListCtrl(); theCtrl.DeleteAllItems(); // 这里全部删除了。
2023-07-20 19:58:334

VC的MFC关于子窗口中的列表控件(LIST控件)在主窗口中调用问题,悬赏!!!

CListCtrl::InsertItem的起始值是0,m_CalList.InsertItem(1,"Time"); 应该是0。 你的CListCtrl是怎么创建的?跟窗口上的List相关联了吗?
2023-07-20 19:58:403

MFC中向listctrl中添加不了数据。OnInitialUpdate方法中通过m_list.InsertColumn()插入了列标题正常显示

m_list.InsertItem(0,"11111");如果仅仅执行这一句可以成功吗?如果可以试一试改成这样 int index=m_list.InsertItem(0,"11111"); m_list.SetItemText(index,1,"22222");
2023-07-20 19:58:471

qt的QComboBox中addItem()与addAction()有什么区别? addItems()与addActions()呢?

addItem就是为QComboBox添加下拉表项啊,addItems()就是为QComboBox添加下拉表项啊,但是可以一次添加很多个,比如QStringList list;list<<""<<"Altemative"<<"Blues"<<"Comedy"<<"Dance";m_com->addItems(list);addAction()应该跟菜单添加动作节点的意思是一样的。//////这些你自己都试一下不就都可以看到效果了?也可以看帮助文档啊- -!
2023-07-20 19:58:551

C#如何让listview可编辑 winform

好像不行的吧
2023-07-20 19:59:273

mfc怎么向listctrl中添加一行数据

看个例子C/C++ code// The pointer to my list view control.extern CListCtrl* pmyListCtrl;CString strText;int nColumnCount = pmyListCtrl->GetHeaderCtrl()->GetItemCount();// Insert 10 items in the list view control.for (int i=0;i < 10;i++){ strText.Format(TEXT("item %d"), i); // Insert the item, select every other item. pmyListCtrl->InsertItem( LVIF_TEXT|LVIF_STATE, i, strText, (i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED, 0, 0); // Initialize the text of the subitems. for (int j=1;j < nColumnCount;j++) { strText.Format(TEXT("sub-item %d %d"), i, j); pmyListCtrl->SetItemText(i, j, strText); }}------解决方案--------------------给你个例子。。。m_list.InsertColumn(0,"Col 1"); m_list.InsertColumn(1,"Col 2"); m_list.InsertColumn(2,"Col 3"); m_list.InsertColumn(3,"Col 4"); m_list.InsertItem(0,"row1",0); CString stemp =""; for(int i =0;i<4;i++) { stemp.Format("row 0 %d",i); m_list.SetItemText(0,i,stemp); } m_list.InsertItem(0,"row befor prev",0); m_list.InsertItem(2,"row after prev",0);注意InsertItem的第一个参数结果因该是这样的row befor prev
2023-07-20 19:59:572

MFC对话框输出信息表示

你应该将这个列表框关联一个CListCtrl类型的变量;如CListCtrl m_ctlList;然后在对话框的OnInitDialog()函数中,增加三个标题头,通过调用CListCtrl的int InsertColumn(int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1 )方法;参数: nCol 新建列的索引值。 pColumn 包含新建列属性的LVCOLUMN结构的地址。 lpszcolumnHeading 包含列标题的字符串的地址。 nFormat 指定列对齐方式的整数。它为下列值之一:LVCFMT_LEFT,LVCFMT_RIGHT或LVCFMT_CENTER。 nWidth 以像素为单位的列宽。如果该参数为-1,那么没有设置列宽。 nSubItem 与列相关联的子项的索引。如果该参数为-1,那么没有子项与列相关。 如:m_ctlList.InsertColumn(0,"食品"LVCFMT_LEFT,95);//插入表头标题m_ctlList.InsertColumn(1,"价格"LVCFMT_LEFT,95);//插入表头标题m_ctlList.InsertColumn(2,"金额"LVCFMT_LEFT,95);//插入表头标题然后,你在为“确定”按钮添加事件处理函数;在响应函数中:1.首先调用UpdateData(TRUE);更新控件上的值2.获取各个控件上的值,(用GetDlgItemText()函数)3.然后插入到列表框当中,调用CListCtrl的int InsertItem(int nItem,LPCTSTR lpszItem)函数如: m_ctlList.InsertItem(0,“面包”); m_ctlList.InsertItem(1,“20元”);大题思路就是这样的;附录:CListCtrl::InsertItemint 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 )返回值:如果成功,则返回新建列的索引值,否则为-1。参数: pItem 指向指定项属性LVITEM结构的指针,如联机文档“平台SDK”中所述。 nItem 被插入项的索引值。 lpszItem 包含项标签的字符串的地址,或当项为回调项时,该变量为LPSTR_TEXT CALLBACK。要了解更多有关回调项的信息,请参阅CListCtrl::GetCall backMask. nImage 项图象的索引值,或当项为回调项时,该变量为I_IMAGECALLBACK。要了解更多有关回调项的信息,请参阅CListCtrl::GetCallbackMask nMask 参数nMask指定了哪个项属性作为参数传递是有效的。它可以是联机文档“平台SDK” 中LVITEM结构所描述的一个或多个掩码值。有效的数据能够通过位与运算来组合。 nState 指示项的状态、状态图象及轮廓图象。请参阅联机文档“平台SDK”中的LVITEM来获取更多信息,并参阅有效标志列表中的列表视图项状态。 nStateMask 指示状态成员中的哪一位将被获取或修改。请参阅联机文档“平台SDK”中的LVITEM来获取更多信息。 nImage 图象列表之内项的图象的索引。 lParam 与项相关联的应用指定的32位值。如果该参数被指定,那么必须设置nMask的属性为LVIF_PARAM。 说明:向列表视图控件中新插入一项。附录2:CListCtrlCObject └CCmdTarget └CWnd └CListCtrl CListCtrl类封装“列表视图控件”功能,显示每个包含图标(列表视图中)和标签的收集。除图标和标签外,每一项还能有显示在图标和标签的右边的列中的信息。此控件(以及CListCtrl类)只适用于运行于Windows 95和Windows NT 3.51及更高版本的程序。下面是CListCtrl类的主要概况。对于详细的、概念性的讨论,请参阅联机文档“Visual C++程序员指南”中的“使用ClistCtrl”和“控件主题”。视图列表视图控件可用四种不同方式显示其内容,称为“视图”。 · 图标视图每一项以全尺寸图标(32×32像素)出现,下面有一个标签。用户可在列表视图窗口拖动项到任意位置。 · 小图标视图每一项以小图标(16×16像素)出现,右边有一个标签。用户可在列表视图窗口拖动项到任意位置。 · 列表视图每一项以小图标出现,下面有一个标签。项按列排列,不能拖动到列表视图窗口的任何位置。 · 报表视图每一项在本行上出现,右边有排列成列的附加信息。最左边的列包含小图标和标签,下一列包含应用指定的子项。嵌入标题控件实现这些列。要了解报表视图标题控件和列的更多信息,请参阅联机文档“Visual C++程序员指南”中的“使用CListCtrl:给控件添加列(报表视图)”。 控件的当前列表视图风格指定当前视图。要了解这些风格及其用法的更多信息,请参阅联机文档“Visual C++程序员指南”中的“使用CListCtrl:改变列表控件风格”。扩展风格除了标准列表风格,类CListCtrl支持一系列提供丰富功能的扩展风格。此功能的一些示例包括: · 逗留选择有效时,若光标保持在某项上一段时间,则允许自动选择该项。 · 虚列表视图如果有效,允许控件支持DWORD项。通过把管理应用项数据放在最顶上而成为可能。除了项选择和焦点信息,所有项信息必须由应用管理。要了解更多信息,请参阅联机文档“Visual C++程序员指南”中的“使用CListCtrl:虚列表控件”。 · 单击或双击激活如果有效,允许热跟踪(项文本自动高亮显示)和高亮显示项的单击和双击激活。 · 拖放列表命令如果有效,允许拖放列表视图控件中列的记录。只对报表视图有效。 要了解使用新扩展风格的更多信息,请参阅联机文档“Visual C++程序员指南”中的“使用CListCtrl:改变列表控件风格”。项和子项列表视图控件中的每一项含有一个图标、一个标签、一个当前状态和应用定义值(称为“项数据”)。一个或更多子项还可与每一项联系。一个“子项”是一个字符串,在报表视图中可显示在项图标和标签右边的列里。列表视图控件中的每一项都必须与子项数目相同。类CListCtrl提供一些函数来插入、删除、查找和更改这些项。要了解更多信息,请参阅“Visual C++程序员指南”中的“使用CListCtrl:列表控件中的滚动、排列、排序和查找”。同时请参阅CListCtrl::GetItem,CListCtrl::InsertItem和CListCtrl::FindItem。缺省时,列表视图控件负责存储一个项的图标和文本属性。然而,除了这些项类型外,类CListCtrl支持“回调项”。一个“回调项”是一个列表视图项,每个应用枣而不是控件枣存储文本,图标或两者。回调掩码用于指定哪个项的属性(文本和/或图标)由应用提供。如果应用使用回调项,它必须可以提供按需要提供文本和/或图标属性。回调项在你的应用已有部分这种信息时很有帮助。要了解更多信息,请参阅CListCtrl::GetCallBackMask和“使用CListCtrl:回调项和回调掩码”。图象列表图标、标题项图象和应用定义的列表视图项状态包含在一些图象列表中(由类CImageList实现),可创建和指派到列表视图控件中。每个列表视图控件可有四个以上的图象列表类型: · 大图标在图标视图中使用,得到全尺寸图标。 · 小图标用于小图标、列表和报表视图中,得到图标视图中使用的小版本的图标。 · 应用定义的状态包含状态图象,在项图标旁显示以指示一个应用定义状态。 · 标题项用于在报表视图中,得到出现在每个标题控件项中的小图象。 缺省时,列表视图控件删除指派给它的图象列表(当它删除时);然而,开发者可通过删除由应用定义的不再使用的图象列表。要了解更多信息,请参阅联机文档“Visual C++程序员指南”中的“使用CListCtrl:列表项和图象列表”。#include <afxcmn.h>请参阅:CImageListCListCtrl类的成员构造函数 ClistCtrl 构造一个CListCtrl对象 Create 创建列表控件并将其附加给CListCtrl对象 属性 GetBkColor 获取列表视图控件的背景色 SetBkColor 设置列表视图控件的背景色 GetImageList 获取用于绘制列表视图项的图象列表的句柄 SetImageList 指定一个图象列表到列表视图控件 GetItemCount 获取列表视图控件中的项的数量 GetItem 获取列表视图项的属性 GetCallbackMask 获取列表视图控件的回调掩码 SetCallbackMask 设置列表视图控件的回调掩码 GetNextItem 查找指定特性和指定指定项关系的列表视图项 GetFirstSeletedItemPosition 在列表视图控件中获取第一个选择的列表视图项的位置 GetNextSeletedItem 为重复而获取下一个选择的列表视图 GetItemRect 获取项的有界矩形 SetItemPosition 在列表视图控件中移动一项到指定位置 GetItemPosition 获取列表视图项的位置 GetStringWidth 指定需要显示所有指定字符串的最小列宽 GetEditControl 获取用于编辑一个项文本的编辑控件的句柄 GetColumn 获取控件的列的属性 SetColumn 设置列表视图列的属性 GetColumnWidth 获取报表视图或列表视图中的列的宽度 SetColumnWidth 改变报表视图或列表视图中的列的宽度 GetCheck 获取与某项相关的状态图象的当前显示状态 SetCheck 设置与某项相关的状态图象的当前显示状态 GetViewRect 获取列表视图控件中所有项的有界矩形 GetTextColor 获取列表视图控件的文本颜色 SetTextColor 设置列表视图控件的文本颜色 GetTextBkColor 获取列表视图控件的文本背景色 SetTextBkColor 设置列表视图控件的文本背景色 GetTopIndex 获取最高级项的索引 GetCountPerPage 计算可正好垂直放入列表视图控件中的项的数目 GetOrigin 获取列表视图控件的最初的当前视图 SetItemState 改变列表视图控件的项的状态 GetItemState 获取列表视图控件的项的状态 GetItemText 获取列表视图项或子项的文本 SetItemText 设置列表视图项或子项的文本 SetItemCount 准备一个列表视图控件以添加大量的项 GetItemData 获取与某项相关的应用所指定的值 SetItemData 设置项的应用指定的值 GetSelectedCount 获取列表视图控件中选择项的数量 SetColumnOrderArray 设置列表视图控件的列序(左或右) GetColumnOrderArray 获取列表视图控件的列序(左或右) SetIconSpacing 设置列表视图控件中的图标的距离 GetHeaderCtrl 获取列表视图控件的标题控件 GetHotCursor 获取在热调试对列表视图控件有效时使用的游标 SetHotCursor 设置在热调试对列表视图控件有效时使用的游标 GetSubItemRect 获取列表视图控件中某项的有界矩形 GetHotItem 获取当前在游标下的列表视图项 SetHotItem 设置列表视图控件的当前热项 GetSelectionMark 获取列表视图控件的选择屏蔽 SetSelectionMark 设置列表视图控件的选择屏蔽 GetExtendedStyle 获取列表视图控件的当前扩展风格 SetExtendedStyle 设置列表视图控件的当前扩展风格 SubItemHitTest 指定哪个列表视图项在指定位置,若存在 GetWorkAreas 获取列表视图控件的当前工作区 GetNumberOfWorkAreas 获取列表视图控件的当前工作区数量 SetItemCountEx 设置虚列表视图控件的项的数量 SetWorkAreas 设置列表视图控件中图标可以显示的区域 ApproximateViewRect 指定显示列表视图控件项所需的宽度和高度 GetBkImage 获取列表视图控件的当前背景图象 SetBkImage 设置列表视图控件的当前背景图象 GetHoverTime 获取列表视图控件的当前逗留时间 SetHoverTime 设置列表视图控件的当前逗留时间 操作 InsertItem 在列表视图控件中插入一个新项 DeleteItem 从控件中删除一项 DeleteAllItems 从控件中删除所有项 FindItem 查找具有指定的字符的列表视图项 SortItems 使用应用定义的比较函数排序列表视图项 HitTest 指定哪个列表视图在指定的位置上 EnsureVisible 保证项是可见的 Scroll 滚动列表视图控件的内容 ReDrawItems 强迫列表视图控件刷新一些项 Update 强迫控件刷新一个指定的项 Arrange 调整一栏里的项 EditLabel 开始项文本该处编辑 InsertColumn 插入列表视图控件中的新列 DeleteColumn 从列表视图控件中删除一列 CreateDragImage 为指定的项构造一个拖动图象列表 可覆盖的函数 DrawItem 当自绘制控件的可视部分改变时被调用
2023-07-20 20:00:051

mfc listctrl setitemtext运行会调用什么函数

示例代码如下:1 m_listctrl.InsertColumn(0,L"属性",LVCFMT_CENTER,58); 2 m_listctrl.InsertColumn(1,L"数值",LVCFMT_CENTER,58); 3 4 TCHAR * pItemPro[] ={ 5 L"长度", 6 L"宽度" 7 }; 8 m_listctrl.InsertItem(0,L""); 9 m_listctrl.InsertItem(1,L"");
2023-07-20 20:00:121

如何给tab控件的每一个标签加上图标

先设置图像列表:CTabCtrl::SetImageList然后在InsertItem时指定图标索引就可以了.CTabCtrl::InsertItemBOOL InsertItem( int nItem, TC_ITEM* pTabCtrlItem );BOOL InsertItem( int nItem, LPCTSTR lpszItem );BOOL InsertItem( int nItem, LPCTSTR lpszItem, int nImage);BOOL InsertItem( UINT nMask int nItem, LPCTSTR lpszItem, int nImage, LPARAM lParam );不过,虽然加了图标,但和的显示还是不一样的,要想更接近那样的,必须自绘.
2023-07-20 20:00:191

qlistwidget怎么追加字符串

ABC串
2023-07-20 20:00:261

VC6.0中Tab Control控件的标签页不显示

给TabControl控件加点东西,比如给标签起个名字,它马上就会显示出来了!方法如下:1ST、用ClassWizard给这个控件添加一个变量,假如叫:m_tab吧,类型为CTabCtrl2ND、在对话框的初始化函数OnInitDialog里面添加如下代码:m_tab.InsertItem(0,"FIRST");m_tab.InsertItem(1,"SECOND");m_tab.InsertItem(2,"THIRD");3RD、保存,然后再编译运行就可以出结果了!
2023-07-20 20:00:331

CListCtrl的基本用法, 比如说是删除, 加入一项.

插入新的一列是InsertColumn实参:第一个参数是int类型的新插入的列的索引(int),第二个是这一列的标题(LPCTSTR),第三个是用于指定列的对齐方式(一般用0就行)第四个是列的宽度(以像素为单位)获取当前总行数(用于插入数据)的函数是GetItemCount无实参在指定列指定行插入数据是InsertItem实参:第一个参数是行数,第二个是要插入的数据(LPCTSTR)设置指定列指定行项的文字是SetItemText实参:第一个参数是行数,第二个参数是列数,第三个参数用来保存获取到的数据(LPCTSTR)配合SetItemText和DeleteItem使用(常用的一组)是GetFirstSelectedItemPosition(无实参,返回类型是POSITION)和GetNextSelectedItem(参数是上一个函数的返回值,返回值是int类型)删除指定列是DeleteItem,参数是GetNextSelectedItem的返回值例""POSITION pos = m_list . GetFirstSelectedItemPosition();int nSel = m_list . GetNextSelectedItem(pos);m_list . DeleteItem(nSel);
2023-07-20 20:00:401

MFC中Listcontrol控件插入的内容怎么显示在同一行?它老是一列显示

。。。你理解错了。m_connlist->InsertItem(0,"asdf"); //参数1是行下标,从0开始插入行 m_connlist.SetItemText(j,2, "这个是列数据");// 表示 j行2列m_list.InsertItem(0,"styleman");m_list.SetItemText(0,1, "111");m_list.SetItemText(0,2, "男");m_list.SetItemText(0,3, "计算机");understand?
2023-07-20 20:01:051

多层次评价地质模型的建立

进行多层次综合评判首先要建立多层次地质(参)数模型。为了使建立多层次地质模型的过程简便、直观,采用了树形控件,见图3.2。将评价参数名称显示为树形控件结点的文本,并且通过上、下、左、右移动结点,能够很方便的建立多层次评价模型。3.3.1.1 结点的数据结构树形结点除了存储评价参数的名称外,还必须存储参数的评语值、权值子结点指针、父结点指针等信息,为此设计了CtreeCtrlNode类:class CTreeCtrlNode{public:HTREEITEM m_hItem;//树形控件结点的指针;int m_nLayerNumber;//所属层号;CString m_sItemText;//结点的文本;float m_fPower;//权值;CStringArray m_aRemarkValue;//以Cstring类型存放评语值;CTreeCtrlNode* m_pParent;//父结点指针;CPtrArray m_apChildren;//子结点指针数组;public:CTreeCtrlNode();virtual CTreeCtrlNode();};3.3.1.2 结点的移动树形控件所显示的只是多层次模型的外观,其内部的数据结构,即结点存储形式,采用的是二维指针数组,其定义如下:CArray<CPtrArray,CPtrArray&>m_apTreeNode;在执行树形控件中移动结点的同时,改变m_apTreeNode[][] 数组中所存储结点指针的位置,这样保持内部数据结构与界面操作的同步。在上述四个移动动作中,向左及向右移动操作由于涉及跨层移动结点,其实现行对较复杂。下面是实现向左移动结点的主要代码部分:void CNewBlurMathDlg::OnButtonMoveleft(){//TODO:Add your control notification handler code here//变量定义;…………………………………………if(pCurrent ->m_apChildren.GetSize()==0){//先获取树形控件中当前结点的父结点;hParent=m_TreeCtrl.GetParentItem(hSelection);if(hParent){hGrandfather=m_TreeCtrl.GetParentItem(hParent)if(hGrandfather)//! =NULL//祖父结点不为空;{//树形控件的插入操作;sItemText=pCurrent->m_sItemText;hNewItem=m_TreeCtrl.InsertItem(sItemText,hGrandfather,hParent);mTreeCtrl.DeleteItem(hSelection);//将当前结点添加到其祖父结点的孩子结点数组中;//第一步:找到祖父结点指针;for(k=0;k<m_apTreeNode[nx-2] .GetSize();k++){pTmp=(CBlurMathTreeNode*)m_apTreeNode[nx-2][k];if(pTmp->m_hItem==hGrandfather){pGrandfather=pTmp;//找到祖父结点指针;break;}}//第二步:找到父结点在其祖父结点的孩子结点数组中的下标nk;int nk;for(k=0;k<pGrandfather->m_apChildren.GetSize();k++){pTmp=(CBlurMathTreeNode*)pGrandfather->m_apChildren[k]if(pTmp->m_hItem==hParent){nk=k;break;}}//第三步:将当前结点添加到其祖父结点的孩子结点数组中;pGrandfather->m_apChildren.InsertAt(nk+ 1,pCurrent);}else{sItemText=pCurrent->m_sItemText;hNewItem=m_TreeCtrl.InsertItem(sItemText,TVI_ROOT,hParent);m_TreeCtrl.DeleteItem(hSelection);pCurrent->m_pParent=NULL;}//设置移动后当前结点的属性;pCurrent->m_nLayerNumber=nx-1;//设置与父结点的关系;pCurrent->m_pParent=pGrandfather;//首先找到父结点在m_apTreeNode[][] 数组中的下标;int nk;for(k=0;k<m_apTreeNode[nx-1] .GetSize();k++){pTmp=(CBlurMathTreeNode*)m_apTreeNode[nx-1][k];if(pTmp->m_hItem==hParent){nk=k;break;}}m_apTreeNode[nx-1] .InsertAt(nk+ 1,pCurrent);m_apTreeNode[nx] .RemoveAt(ny);//找到其在父结点的孩子结点数组中的下标nk;nk=0;for(k=0;k<pParent->m_apChildren.GetSize();k++){pTmp=(CBlurMathTreeNode*)pParent->m_apChildren[k];if(pTmp->m_hItem==hSelection){nk=k;//找到当前结点指针;break;}}pParent->m_apChildren.RemoveAt(nk);pCurrent->m_hItem=hNewItem;if(m_apTreeNode[nx] .GetSize()==0)m_apTreeNode.SetSize(nx);//将移动后的“当前结点”设置为默认选择的结点;m_TreeCtrl.SelectItem(hNewItem);}
2023-07-20 20:01:201

MFC中如何更改窗体名字

你贴的那个是用MFC的tab控件实现的。关于tab控件的使用,下面有一个例子1、首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个Tab Control 控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tabctrl2、创建两个新的对话框资源,其属性作如下修改:Border:none //边界为空,这样它就没了标题栏Style :Child // 这样这个模板就可以当作另一个窗口的子窗口了。其它如果没有必要,就不用改了。在上面加一些控件什么的,具体操作跟普通对话框没有区别。完成后从这两个对话框模板生成两个新的对话框类。3、在主对话框中为新添加进来的两个类增加两个变量:如:CDialog1 m_mm1;CDialog2 m_mm2;4、在主对话框的OnInitDialog()函数中添加如下类似的代码:TCITEM item;item.mask = TCIF_TEXT;item.pszText = "第一页";m_tabctrl.InsertItem (0,&item);item.pszText ="第二页";m_tabctrl.InsertItem (1,&item);m_mm1.Create (IDD_DIALOG1,&m_tabctrl);m_mm2.Create (IDD_DIALOG2,&m_tabctrl);m_mm1.SetWindowPos (NULL,10,30,400,100,SWP_SHOWWINDOW);m_mm2.SetWindowPos (NULL,10,30,400,100,SWP_HIDEWINDOW ); 解释如下:两个InsertItem函数的调用是为了给标签控件增加两个标签页面,文本是标题。SetWindowPos()函数设置这两个对话框在Z顺序中的位置,显示或隐藏状态.。5、在主对话中为标签控件添加一个标签选择改变(TCN_SELCHANGE)的控件通知消息,以便在用户选择标签时通知主对话框。在主对话框的编辑界面右击标签控件,选择添加一个事件可以完成这个操作。在事件处理中添加如下代码,如下例:void CtabdialogDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult){CRect r;m_tabctrl.GetClientRect (&r);switch(m_tabctrl.GetCurSel()){case 0:m_mm1.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_SHOWWINDOW);m_mm2.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_HIDEWINDOW ); break;case 1:m_mm1.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_HIDEWINDOW);m_mm2.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_SHOWWINDOW ); break;}*pResult = 0;}要想知道用户选择那个标签页,要通过m_tabctrl.GetCurSel() 函数。为了不使显示的子对话框覆盖标签控件的显示,所以要获得标签控件的尺寸然后设置各页面的尺寸。或者:m_Tab.InsertItem(0,"第一页");m_Tab.InsertItem(1,"第二页");m_Tab.InsertItem(2,"第三页");m_Tab.InsertItem(3,"第四页");m_PageA.Create(IDD_PROPPAGE_A,&m_Tab);m_PageB.Create(IDD_PROPPAGE_B,&m_Tab);m_PageC.Create(IDD_PROPPAGE_C,&m_Tab);m_PageD.Create(IDD_PROPPAGE_D,&m_Tab);m_PageA.ShowWindow(SW_SHOW);m_PageB.ShowWindow(SW_HIDE);m_PageC.ShowWindow(SW_HIDE);m_PageD.ShowWindow(SW_HIDE);
2023-07-20 20:01:291

关于MFC ListControl怎么插入数据

m_list.InsertItem( ... );m_list.SetItemText( ... );
2023-07-20 20:01:482

MFC对话框style设为child时,怎样才能正确加入tabcontrol控件?

将对话框非模态显示。
2023-07-20 20:01:562

LV_ITEM 问题,谁能解释一下这几行代码

LV_ITEM lvitemAdd = {0}; // 初始化结构成员为0lvitemAdd.mask = LVIF_IMAGE|LVIF_TEXT; // 设置掩码lvitemAdd.iImage = 0; // 设置图标索引为0lvitemAdd.iItem = i; // 第i个项lvitemAdd.iSubItem = 0; // 子项为0lvitemAdd.pszText = name.GetBuffer(0); // 项的显示文本m_list.InsertItem(&lvitemAdd); // 向列表插入此项补充:是CListCtrl插入一项信息,表示这个信息的结构。
2023-07-20 20:02:031

VC, List Control显示数据库内容的问题。

DoDataExchange用于控件和某数据成员间建立一种隐射关系不应该将它作为初始化函数使用初始化一般数据可以使用构造函数初始化子窗口可以使用OnInitDialog
2023-07-20 20:02:103

c++中clistctrl 怎么添加行?

采纳后请留意百度HI
2023-07-20 20:03:023

MFC中GetItemText

CString buffer; buffer=m_list.GetItemText(0,1);
2023-07-20 20:03:124

vb.net 如何用SendMessage发送LVM_INSERTITEMA消息,以便在listview中插入新项

插入项目ListView控件自身支持的,何必用SendMessage?而且好像PostMessage更加稳定
2023-07-20 20:03:191

VC++中有关CListCtrl控件的使用问题

恩!还不错!偶也学习学习!
2023-07-20 20:03:273

C++怎么把List Control控件表格中的记录删除而从新显示新的数据?

CListCtrl m_list; m_list.DeleteAllItems();
2023-07-20 20:03:343

c++中怎么把编辑框里的内容添加到列表框里?

分别添加m_edit1 , m_edit2 , m_list控件变量获取edit1, edit2中内容的语句为CString str1,str2;m_edit1.GetWindowTextW(str1);m_edit2.GetWindowTextW(str2);判断一下str1,str2是否为空: if(str1==_T("")) ......先获取list中记录的总数: int n=m_list.GetItemCount();m_list.InsertItem(n,str1); //插入新行的第一列m_list.SetItemText(n,1,str2); //str2写到list控件新行的第二列以次类推....
2023-07-20 20:04:181

QT如何实现自定义下拉列表

你是指QComboBox不清楚你是要什么样的自定义,说详细点
2023-07-20 20:04:394

pb treeview的问题

写在constructor事件下string ls_agent_of_office,ls_agent_no,ls_agent_na,ls_natreeviewitem tvi long ll_tvihandle0,ll_tvihandle1,ll_tvihandle2integer li_i,li_j,li_countll_tvihandle0=tv_1.insertitemlast(0,"办事处",1)declare c1 cursor for select agent_of_office from ailex_jxc_baseinf_agent where agent_of_office is not null group by agent_of_office;open c1;fetch c1 into :ls_agent_of_office;//判断办事处是否是第一个节点li_i=1do while sqlca.sqlcode=0 //是第一节点 if li_i=1 then if ls_agent_of_office<>""or not isnull(ls_agent_of_office) then ll_tvihandle1=tv_1.insertitemfirst(ll_tvihandle0,ls_agent_of_office,1) end if //在第一节点下插入经销商 declare c2 cursor for select agent_no,agent_na from ailex_jxc_baseinf_agent where (agent_of_office=:ls_agent_of_office)and(agent_of_office is not null); open c2; fetch c2 into:ls_agent_no,:ls_agent_na; //判断用户是否是第一个节点 li_j=1 do while sqlca.sqlcode=0 //组合编号及经销商名作为第二级节点名 ls_na="("+ls_agent_no+")"+ls_agent_na //是第一节点 if li_j=1 then if ls_agent_na<>""or not isnull(ls_agent_na)then tv_1.insertitemfirst(ll_tvihandle1,ls_na,1) end if //不是第一节点 else if ls_agent_na<>""or not isnull(ls_agent_na)then tv_1.insertitemlast(ll_tvihandle1,ls_na,1) end if end if fetch c2 into:ls_agent_no,:ls_agent_na; li_j=li_j+1 loop close c2; //不是第一节点 else if ls_agent_of_office<>""or not isnull(ls_agent_of_office) then ll_tvihandle1=tv_1.insertitemlast(ll_tvihandle0,ls_agent_of_office,1) //tv_1.getitem(ll_tvihandle1,tvi) //tv_1.setitem(ll_tvihandle1,tvi) end if declare c3 cursor for select agent_no,agent_na from ailex_jxc_baseinf_agent where (agent_of_office=:ls_agent_of_office)and(agent_of_office is not null); open c3; fetch c3 into:ls_agent_no,:ls_agent_na; li_j=1 do while sqlca.sqlcode=0 //组合编号及经销商名作为第二级节点名 ls_na="("+ls_agent_no+")"+ls_agent_na if li_j=1 then if ls_agent_na<>""or not isnull(ls_agent_na)then tv_1.insertitemfirst(ll_tvihandle1,ls_na,1) end if else if ls_agent_na<>""or not isnull(ls_agent_na)then tv_1.insertitemlast(ll_tvihandle1,ls_na,1) end if end if fetch c3 into:ls_agent_no,:ls_agent_na; li_j=li_j+1 loop close c3; end if fetch c1 into :ls_agent_of_office; li_i=li_i+1loopclose c1;这个是之前人写的一个代码,我想你应该能看懂,但我从来不这么用,因为treeview中的item能有label属性和data属性,有这2个属性基本就能实现很多功能了,没必要非去建立一个datawindows。下面是我写的事件,你对比下吧string old,tv_datalong i,jtreeviewitem node,node1,node2long ll_handle, ll_roothandlell_roothandle = tv_1.insertitemlast( 0, "a", 1)tv_1.getitem( ll_roothandle, node)node.data = "1"tv_data = node.datall_handle = tv_1.insertitemfirst( ll_roothandle, tv_data, 1)tv_1.insertitemfirst(ll_handle,"ab",1)tv_1.insertitemlast( ll_roothandle, "b", 1)tv_1.insertitemlast( ll_roothandle, "c", 1)tv_1.insertitemlast( ll_roothandle, "d", 1)
2023-07-20 20:04:531

VC++SetItemText": 不能将参数 3 从"char *"转换为"LPCTSTR"

(char*) ==>(LPCTSTR)(LPTSTR)
2023-07-20 20:05:071