MFC学习笔记-界面00、动态数组

来源:互联网 发布:php pack 函数 java 编辑:程序博客网 时间:2024/05/21 22:34

1,DECLARE_DYNCREATE( class_name )
参数:
class_name 类的实际名字(不用引号括起来)。
说明:
使用DECLARE_DYNCREATE宏可以使每个CObject的派生类的对象具有运行时动态创建的能力
MTestClass.h

class CMTestClass : public CObject{       DECLARE_DYNCREATE(CMTestClass)public:       CMTestClass();       virtual ~CMTestClass();}

MTestClass.cpp

#include "MTestClass.h"IMPLEMENT_DYNCREATE(CMTestClass,CObject)CMTestClass::CMTestClass(){}CMTestClass::~CMTestClass(){}

2,GetTickCount()
说明:
GetTickCount返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD

3,AfxGetApp()
获取当前的App

(class_name )* pApp = (class_name *)AfxGetApp();

4,直接可以使用枚举的值,枚举定义最后必须有分号结束(C#无)

enum Test{        ENUM_TEST1=0,        ENUM_TEST2,        ENUM_TEST3,};UINT i=ENUM_TEST2;//i=1;//C# enum Test//C# {//C#    ENUM_TEST1=0,//C#    ENUM_TEST2,//C#    ENUM_TEST3,//C# }//C# uint i=(uint)Test.ENUM_TEST2;////i=1;

5,CArray < TYPE,ARG_TYPE >
MFC使用CArray类定义动态数组
参数说明:
TYPE 参数来指定数组元素的类型
ARG_TYPE 参数来指定函数参数的类型。例如CArray类的Add成员函数采用ARG_TYPE参数

6,Vector< TYPE>
C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组

#include <vector>using namespace std;vector<int> m_vector;

7,List< TYPE>
C++使用,将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢

#include <list>using namespace std;list<int> m_list;

8,map < Key,Value >
C++中使用,提供一个键值对容器,注:参考CArray理解参数意思
注:有点类似C#中的字典Dictionary < Type1,Type2 >

#include <map>using namespace std;map<int,string> m_map;

9,CMap< KEY,ARG_KEY,VALUE,ARG_VALUE >
MFC提供使用类似字典的键值容器

CMapWordToPtr 保存void指针,关键字为WORD
CMapPtrToWord 保存WORD,关键字为void指针
CMapPtrToPtr 保存void指针,关键字为其它void指针
CMapWordToOb 保存CObject指针,关键字为WORD
CMapStringToOb 保存CObject指针,关键字为字符串
CMapStringToPtr 保存void指针,关键字为字符串
CMapStringToString 保存字符串,关键字为字符串

声明:

CMap < SOCKET,   SOCKET,   char*,   char* >    m_SockToUserIDMap;   CMap < char*,   char*,   SOCKET,   SOCKET>   m_UserIDToSockMap;    

赋值:

m_SockToUserIDMap[pUserInfo->sSocket] = pszUserID;   m_UserIDToSockMap[pszUserID] = pUserInfo->sSocket; 

取值:

char   *pszUserID = m_SockToUserIDMap[sSock];   SOCKET sSock = m_UserIDToSockMap[pszUserID];   

此处略去CMyData的代码。
以下演示CMap的基本用法,其它的也都差不多的用法,只是其中元素变一变。
//定义类型

typedef  CTypedPtrMap <CMapStringToOb,CString,CMyData*>   CMapDataMap;