MFC集合

不多说,运行一个例子看看。

// MFCCollection.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <afxtempl.h>

class CPoint3D{
public:
	int m_x;
	int m_y;
	int m_z;
	CPoint3D(){}
	CPoint3D(int x,int y,int z){
		m_x=x;
		m_y=y;
		m_z=z;
	}
public:
	operator==(const CPoint3D pt)const {
		return (m_x==pt.m_x)&&(m_y==pt.m_y)&&(m_z==pt.m_z);
	}
};
void CArrayTest(){
	CArray<CPoint3D,CPoint3D> ptArray;
	//set size
	ptArray.SetSize(100);
	//set element value
	for(int i=0;i<100;++i){
		ptArray.SetAt(i,CPoint3D(i,i,i));
	}
	ptArray.SetAtGrow(i,CPoint3D(i,i,i));
	ptArray.Add(CPoint3D(102,102,102));
	ptArray.InsertAt(0,CPoint3D(-2,-2,-2));
	ptArray.RemoveAt(0,5);
	ptArray.SetSize(10);
	ptArray.FreeExtra();	//free the extra memory
	int nSize=ptArray.GetSize();
	printf("size=%d\n",nSize);
	for(i=0;i<nSize;++i){
		printf("x=%d,y=%d,z=%d\n",
			ptArray[i].m_x,ptArray[i].m_y,ptArray[i].m_z);
	}
}
void CListTest(){
	CList<CPoint3D,CPoint3D>ptList;
	for(int i=0;i<10;++i){
		ptList.AddTail(CPoint3D(i,i,i));
	}
	ptList.SetAt(ptList.FindIndex(5),CPoint3D(66,66,66));
	ptList.RemoveAt(ptList.FindIndex(6));

	int nCount=ptList.GetCount();
	printf("count=%d\n",nCount);
/*	POSITION pos=ptList.GetHeadPosition();
	while(pos){
		CPoint3D pt=ptList.GetNext(pos);
			printf("x=%d,y=%d,z=%d\n",
			pt.m_x,pt.m_y,pt.m_z);
	}
	*/
	POSITION pos=ptList.GetTailPosition();
	while(pos){
		CPoint3D pt=ptList.GetPrev(pos);
			printf("x=%d,y=%d,z=%d\n",
			pt.m_x,pt.m_y,pt.m_z);
	}
	pos=ptList.Find(CPoint3D(4,4,4));
	if(pos){
		printf("CPoint(4,4,4) exist!\n");
	}
}
void CMapTest(){
	CMap<int,int,CPoint3D,CPoint3D> ptMap;
	ptMap.InitHashTable(121); //nSize=nCount*1.2+1; even-->odd
	int key=0;
	for(int i=0;i<100;++i){
		key=i*2+1;
		ptMap[key]=CPoint3D(i,i,i);
	}
	ptMap.SetAt(15,CPoint3D(77,77,77));
	ptMap[15]=CPoint3D(777,777,777);
	ptMap.RemoveKey(15);	//remove key--value
	int nCount=ptMap.GetCount();
	POSITION pos=ptMap.GetStartPosition();
	printf("count=%d\n",nCount);
	key=0;
	CPoint3D pt;
	while(pos){
		ptMap.GetNextAssoc(pos,key,pt);
		printf("ptMap[%d]=CPoint3D(%d,%d,%d)\n",
			key,pt.m_x,pt.m_y,pt.m_z);
	}
	if(ptMap.Lookup(175,pt)){
		printf("the element exist!\n");
		printf("ptMap[%d]=CPoint3D(%d,%d,%d)\n",
			175,pt.m_x,pt.m_y,pt.m_z);
	}
}
int main(int argc, char* argv[])
{
//	CArrayTest();
//	CListTest();
	CMapTest();
	return 0;
}
时间: 2024-10-26 15:55:48

MFC集合的相关文章

利用stl的集合类函数 操作mfc数组

#include  <algorithm> #include  "afxtempl.h" //TYPE类必须有< template<class TYPE, class ARG_TYPE> void Sort(CArray<TYPE,ARG_TYPE>& dest) { std::sort(dest.GetData(),dest.GetData()+dest.GetSize()); } //构造一个有序序列,该序列仅保留第一个序列中存在的

MFC框架程序剖析

一.           MFC MFC(Microsoft Foundation Class,微软基础类库)是微软为了简化程序员的开发工作所开发的一套C++类的集合,是一套面向对象的函数库,以类的方式提供给用户使用.利用这些类,可以有效发帮助程序员完成Windows应用程序的开发 二.           theAPP theApp代表应用程序实例. 在C×××App类中 ,有 theApp 这个变量,它是CWinApp类的派生类的对象,是一个全局变量. 全局变量在WinMain()前被创建.

技术资源集合

网上看到的资源集合,挺有用的,在这里加上自己的收藏分享一下. 技术站点 stackoverflow:全球第一IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 MDN:前端标准这里都可以查到 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,

[MFC] MFC音乐播放器 傻瓜级教程 网络 搜索歌曲 下载

>目录< >----------------------< 1.建立工程  1.建立一个MFC工程,命名为Tao_Music 2.选择为基本对话框 3.包含Windows Sockts 4.使用静态链接库 [方便一会直接生成的exe文件单独可以发布] 2. 搭建界面  1. 拖入控件: 2. 控件拖入并摆好 3. 控件属性设置: 3. 写代码实现功能  1.变量绑定: 2.加入图片资源 3.新建mp3类: 4.修改Tao_MusicDlg.h 5.修改Tao_Music.cpp 6

MFC,C++,VC++,VS2010 之间究竟是什么关系

C++是在C语言的基础上发展而来的面向对象的一种语言: MFC是基于C++类的窗口开发工具,内含大量的基类.降低编程人员的工作量: VC++是一种开发工具. VS2010是更高版本号的开发工具,功能强大.内集合VC++.VB.C#等.

MFC【5】MFC集合类

MFC集合类现在来看已经很落后了. 5.1数组 5.1.1MFC数组类 CArray类,它实际是一个模板类,利用它可以创建人和数据类型的类型安全数组.在头文件Afxtempl.h中定义了CArray.其次是非模板化的数组类,分别为保存特定类型的数据而设计.这些类在Afxcoll.h中定义.表5-1中列出了非模板化的MFC数组类以及他们所保存的数据类型. 表5-1 类名 数据类型 CByteArray 8位字节(BYTE) CWordArray 16位字节(WORD) CDWordArray 32

MFC总结

一MFC 的概念和作用 1 什么是MFC? 全称Microsoft Foundation Class Library 我们称之为 微软基础类库,封装了绝大部分WIN32 api 函数,还封装 了程序流程. 1.1 硬盘存在形式就是一个库(静态库/动态库) 1.2 原理上还是一个程序框架 2 为什么使用MFC? 基于框架编程,提供工作效率,减少开发周期,节约开发 成本. 二几个重要头文件 afx.h - MFC 绝大部分类的声明 afxwin.h - 包含了afx.h 和windows.h afx

MFC界面相关

一MFC 的菜单 1 相关类 WIN32 - HMENU MFC - CMenu 类对象 CMenu - 封装了操作菜单的各种API 函数,还封装了很重要成 员 m_hMenu(保存菜单句柄) 2 菜单使用 2.1 添加菜单资源 2.2 设置菜单(将菜单挂到窗口中) 1)在创建主框架窗口的(Create)过程中 2)在框架窗口的WM_CREATE 消息处理中 CMenu menu; menu.LoadMenu CFrameWnd::SetMenu 2.3 设置菜单项状态 ON_WM_INITME

VS2010 MFC对Excel的操作

这是帮别人做项目遇到的一个问题,的那个是纠结了老长时间,本以为是一件很轻松的事... 首先,这里采用了OLE来对Excel进行操作,网上其实有大把的例子,虽然都可以运行,但是并不能满足项目要求,其实我要实现的无非就是增查删改功能. 与网上操作步骤一样,首先就是去OFFICE里面将几个重要的类添加进去.网上有一篇文章其实封装的不错了,只是没有删除与新建功能,这里添加了以上几个功能.下面进入正题. a. project->add class->MFC class from typelib (项目-