clist,list怎么读

http://www.itjxue.com  2023-01-05 00:49  来源:未知  点击次数: 

MFC CList

CListint,int list;

POSITION ps=list.GetHeadPosition();

list.InsertAfter(ps,1);

list.InsertAfter(ps,2);

list.InsertAfter(ps,3);

ps=list.GetHeadPosition();

for(;ps!=NULL;list.GetNext(ps))

printf("%d\n",list.GetAt(ps));

//这样就遍历了吧~~

C++ 中STL list编译问题

#include iostream

#include list

//#pragma warning(disable: 4786)

using namespace std;

typedef listchar C_LIST;

void listTravel(C_LIST list)

{

C_LIST::iterator itr;

for(itr = list.begin(); itr != list.end(); itr++)

{

cout *itr ends;

}

cout endl;

}

int listPopFront(C_LIST list,char *ch) //C_LIST是一个list容器,如果你加C_LIST * 那就是一个容器数组,你可以用C_LIST*list 但是要用list[0].front()访问

{

*ch = list.front();

list.pop_front();

return list.size();

}

int main()

{

C_LIST clist;

char ch;

clist.push_back('A');

clist.push_back('B');

clist.push_back('C');

listTravel(clist);

listPopFront(clist,ch);

listTravel(clist);

}

clistctrl与clistview有什么不同?

CListView 和 CListCtrl 控件的区别:

clistview里面嵌的是clistctrl,clistctrl是mfc对windows的common control(名字叫listview32...)的封装。

控件不支持文档/视,拖动等特性,clistview比clistctrl多了这些特性。

奶牛过街(crossings)求C++代码

#include?stdio.h

int?clist[100000][2];//能够保存100000牛的a_i和b_i

void?main()

{

int?n,num,i,j;

scanf("%d",n);//输入奶牛数量

for(i=0;in;i++)

{

scanf("%d%d",clist[i][0],clist[i][1]);//保存n行a_i和b_i,?clist[i][0]对应a_i,clist[i][1]对应b_i

}

num=0;//初始化可以通过的奶牛数量

for(i=0;in;i++)

{

for(j=0;jn;j++)

{

if(i==j)?continue;

if((clist[i][0]=clist[j][0]clist[i][1]=clist[j][1])||(clist[i][0]=clist[j][0]clist[i][1]=clist[j][1]))

{

break;//路线交叉退出for

}

}

if(j==n)?num++;

}

printf("%d",num);

}

MFC类中,CList删除元素的同时,会不会delete掉对应占有的内存?如果不会,要怎么删除?

CList删除元素时, 会删除元素对应的内存. 但不删除CList对象的内存. 这个对象一般由类自动管理, 而不需要你去删除它.

因为使用DDL时, 使用的是类成员变量.

而在C++中, 类成员变量的内存的生命周期在类的释放时释放.

请教CListView的具体用法,有实例代码最好

CListView用在文档视图结构中。用APPWIZARD 生成一个单文档的程序,有一个向导页,选中VIEW 从CListView派生。

1 。设定样式

void CIHISSERVERView::OnInitialUpdate()

{

CListView::OnInitialUpdate();

CListCtrl m_list = GetListCtrl();

m_list.SetBkColor(RGB(242,251,255));

m_list.SetTextColor( RGB(12,26,234) );

m_list.InsertColumn(0 , "报警顺序号", LVCFMT_LEFT, 80, 0 );

m_list.InsertColumn(1 , "住宅编号", LVCFMT_LEFT, 80, 1 );

m_list.InsertColumn(2 , "所有者姓名", LVCFMT_LEFT, 80, 2 );

m_list.InsertColumn(3 , "手机号码", LVCFMT_LEFT, 100, 3 );

m_list.InsertColumn(4 , "住宅电话", LVCFMT_LEFT, 80, 4 );

m_list.InsertColumn(5 , "办公室电话", LVCFMT_LEFT, 80, 5 );

m_list.InsertColumn(6 , "使用者姓名", LVCFMT_LEFT, 80, 6 );

m_list.InsertColumn(7 , "手机号码", LVCFMT_LEFT, 100, 7 );

m_list.InsertColumn(8 , "住宅电话", LVCFMT_LEFT, 80, 8 );

m_list.InsertColumn(9 , "办公室电话", LVCFMT_LEFT, 80, 9);

m_list.InsertColumn(10, "主控器编号", LVCFMT_LEFT, 80, 10);

m_list.InsertColumn(11, "工作模式", LVCFMT_LEFT, 80, 11);

m_list.InsertColumn(12, "报警逻辑", LVCFMT_LEFT, 80, 12);

m_list.InsertColumn(13, "端口类型", LVCFMT_LEFT, 60, 13);

m_list.InsertColumn(14, "报警端口号", LVCFMT_LEFT, 80, 14);

m_list.InsertColumn(15, "报警路径", LVCFMT_LEFT, 140, 15);

m_list.InsertColumn(16, "报警时间", LVCFMT_LEFT, 160, 16);

m_list.ModifyStyle( LVS_TYPEMASK,LVS_REPORT | LVS_SINGLESEL );

m_list.SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE );

}

2。鼠标右键单击ListView事件

// 鼠标右键单击事件,谈出控制菜单

void CIHISSERVERView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)

{

// TODO: Add your control notification handler code here

CListCtrl m_list = GetListCtrl();

int nItemIndex = -1;

if ( ( m_list.GetNextItem(-1, LVNI_SELECTED))!=-1)

{

while ( ( nItemIndex = m_list.GetNextItem ( nItemIndex, LVNI_SELECTED ) ) != -1 )

{

CMenu menu;

menu.LoadMenu(IDR_MENU2);

CPoint point ;

::GetCursorPos(point);

::SetForegroundWindow(m_hWnd);

menu.GetSubMenu(0)-TrackPopupMenu(TPM_LEFTALIGN ,

point.x,

point.y,

this,

NULL);

}

}

*pResult = 0;

}

3。在其他的类中向ListView插入数据

UINT CProcessAlarm:: dealwith( vector UCHAR arr )

{

SumInBreakPath.Empty();

SumInBreakPaths.Empty();

CMainFrame *m_mainframe = (CMainFrame*)AfxGetMainWnd();

CIHISSERVERView *pview = (CIHISSERVERView*)m_mainframe - GetActiveView();

CListCtrl m_list =pview - GetListCtrl();

。。。

m_list.SetTextColor(RGB(0,0,189));

m_list.SetTextBkColor(RGB(150,252,255));

m_list.InsertItem( ListCtrlIndex, AlarmNO );

m_list.SetItemText(ListCtrlIndex,1, (char*)HouseID );

if (OwnerName == "" )

m_list.SetItemText(ListCtrlIndex,2, "没有记录" );

else

m_list.SetItemText(ListCtrlIndex,2, OwnerName );

if ( OwnerMobilePhone == "" )

m_list.SetItemText(ListCtrlIndex,3, "没有记录" );

else

m_list.SetItemText(ListCtrlIndex,3, OwnerMobilePhone);

if (OwnerHomePhone == "")

m_list.SetItemText(ListCtrlIndex,4, "没有记录");

else

m_list.SetItemText(ListCtrlIndex,4, OwnerHomePhone);

if ( OwnerOfficePhone == "" )

m_list.SetItemText(ListCtrlIndex,5, "没有记录");

else

m_list.SetItemText(ListCtrlIndex,5, OwnerOfficePhone);

if ( ResidentName == "" )

m_list.SetItemText(ListCtrlIndex,6, "没有记录");

else

m_list.SetItemText(ListCtrlIndex,6, ResidentName );

if ( ResidentMobilePhone == "" )

m_list.SetItemText(ListCtrlIndex,7, "没有记录");

else

m_list.SetItemText(ListCtrlIndex,7, ResidentMobilePhone);

if ( ResidentHomePhone == "" )

m_list.SetItemText(ListCtrlIndex,8, "没有记录");

else

m_list.SetItemText(ListCtrlIndex,8, ResidentHomePhone);

if ( ResidentOfficePhone == "")

m_list.SetItemText(ListCtrlIndex,9, "没有记录");

else

m_list.SetItemText(ListCtrlIndex,9, ResidentOfficePhone);

m_list.SetItemText(ListCtrlIndex,10, ControllerID);

m_list.SetItemText(ListCtrlIndex,11, WorkModeName);

m_list.SetItemText(ListCtrlIndex,12, SumLogicName);

m_list.SetItemText(ListCtrlIndex,13, PortType);

m_list.SetItemText(ListCtrlIndex,14, AlarmPortNum);

m_list.SetItemText(ListCtrlIndex,15, inBreakPath);

m_list.SetItemText(ListCtrlIndex,16, Time);

// 使焦点始终在最后一行

int nCount = m_list.GetItemCount();

if (nCount 0)

{

m_list.EnsureVisible(nCount-1, FALSE);

m_list.SetItemState(nCount-1, LVIS_SELECTED, LVIS_SELECTED);

if ( nCount-1 0 )

{

m_list.SetItemState(nCount-1-1, 0, LVIS_SELECTED);

}

}

m_list.SetFocus();

。。。。

(责任编辑:IT教学网)

更多

推荐鼠标代码文章