亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ndkmessage.h

?? 開發環境為VC++ 的數據庫管理系統
?? H
字號:
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// NDK 2.0 - Network Development Kit                                          //
//                                                                            //
// Authors: Sebastien Lachance                                                //
//                                                                            //
// E-mail:  netblitz@rocler.qc.ca                                             //
//                                                                            //
// -------------------------------------------------------------------------- //
//                                                                            //
// Permission to use, copy, modify, and distribute this software for any      //
// purpose and without fee is hereby granted. This is no guarantee about the  //
// use of this software. For any comments, bugs or thanks, please email us.   //
//                                                                            //
// -------------------------------------------------------------------------- //
//                                                                            //
// Targeted Platform: Any Windows version                                     //
//                                                                            //
// Last modification: January 2002                                            //
//                                                                            //
// History:                                                                   //
//                                                                            //
// 1- First release of this file.                                             //
// 2- The class is renamed and some optimizations are applied. Hungarian      //
//    notation is used. Adds method are added.                                //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// Includes                                                                   //
////////////////////////////////////////////////////////////////////////////////
#pragma once
#include <afxtempl.h>
#include "NDKDefines.h"
#include "NDKMessageData.h"

////////////////////////////////////////////////////////////////////////////////
// Defines                                                                    //
////////////////////////////////////////////////////////////////////////////////
typedef CArray<CNDKMessageData, CNDKMessageData &> CElements;


////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// CNDKMessage (concrete class)                                               //
//                                                                            //
// -------------------------------------------------------------------------- //
//                                                                            //
// This class is the primitive object that can be sent through the            //
// client/server architecture. It can be seen as an array of elements of      //
// different type. These types are all the C++ basic types as well as         //
// CString. It also supports an arbitrary length buffer of untyped data       //
// (LPVOID). The array grows automatically as needed. Elements within the     //
// array are zero-indexed.                                                    //
//                                                                            //
// Each message type is identified with a unique Id (long).                   //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

class NDK_EXT_CLASS CNDKMessage : public CObject
{
public:
	////////////////////////////////////////////////////////////////////////////
	// Constructors / Destructor                                              //
	////////////////////////////////////////////////////////////////////////////

	// Constructor.
	CNDKMessage();

	// Constructor with a unique Id.
	CNDKMessage(long lId);

	// Copy-Constructor.
	CNDKMessage(const CNDKMessage& message);
	
	// Destructor.
	virtual ~CNDKMessage();

	////////////////////////////////////////////////////////////////////////////
	// Attributes                                                             //
	////////////////////////////////////////////////////////////////////////////
 
	// Sets a unique identifier to each message.
	void SetId(long lId);

	// Gets the identifier of this message.
	long GetId() const;

	// Gets the number of elements in the array of this message.
	int GetNbElements() const;

	////////////////////////////////////////////////////////////////////////////
	// Operations                                                             //
	////////////////////////////////////////////////////////////////////////////

	// The following methods are used to add at the end an element in the 
	// internal array of the CNDKMessage to any value.
	void Add(UCHAR ucData);
	void Add(char cData);
	void Add(USHORT usData);
	void Add(short sData);
	void Add(UINT unData);
	void Add(int nData);
	void Add(ULONG ulData);
	void Add(long lData);
	void Add(float fData);
	void Add(double dData);
	void Add(const CString& strData);
	void Add(LPVOID pData, UINT unLength);

	// The following methods are used to set an element at the specified index
	// in the internal array of the CNDKMessage to any value. Index is 
	// zero-indexed.
	void SetAt(long lIndex, UCHAR ucData);
	void SetAt(long lIndex, char cData);
	void SetAt(long lIndex, USHORT usData);
	void SetAt(long lIndex, short sData);
	void SetAt(long lIndex, UINT unData);
	void SetAt(long lIndex, int nData);
	void SetAt(long lIndex, ULONG ulData);
	void SetAt(long lIndex, long lData);
	void SetAt(long lIndex, float fData);
	void SetAt(long lIndex, double dData);
	void SetAt(long lIndex, const CString& strData);
	void SetAt(long lIndex, LPVOID pData, UINT unLength);

	// Gets the data type at the specified index.
	NDKDataType GetDataTypeAt(long lIndex) const;

	// The following methods are used to get an element at the specified index
	// in the internal array of the CNDKMessage. The parameter passed by 
	// reference will be filled with the appropriate data. The type of data 
	// extracted must match the type of data set with a previous call to 
	// SetAt or Add. Index is zero-indexed.
	void GetAt(long lIndex, UCHAR& ucData) const;
	void GetAt(long lIndex, char& cData) const;
	void GetAt(long lIndex, USHORT& usData) const;
	void GetAt(long lIndex, short& sData) const;
	void GetAt(long lIndex, UINT& unData) const;
	void GetAt(long lIndex, int& nData) const;
	void GetAt(long lIndex, ULONG& ulData) const;
	void GetAt(long lIndex, long& lData) const;
	void GetAt(long lIndex, float& fData) const;
	void GetAt(long lIndex, double& dData) const;
	void GetAt(long lIndex, CString& strData) const;
	void GetAt(long lIndex, LPVOID pData, UINT unLength) const;

	// Resets the current index. The current index is used by GetNext method.
	void ResetCurrentIndex();

	// Gets the current index.
	long GetCurrentIndex() const;

	// Returns if the current index is the last.
	BOOL IsLastCurrentIndex();

	// The following methods are used to get an element in the internal array of 
	// the CNDKMessage using the current index. The parameter passed by 
	// reference will be filled with the appropriate data. The type of data 
	// extracted must match the type of data set with a previous call to 
	// SetAt or Add. 
	void GetNext(UCHAR& ucData);
	void GetNext(char& cData);
	void GetNext(USHORT& usData);
	void GetNext(short& sData);
	void GetNext(UINT& unData);
	void GetNext(int& nData);
	void GetNext(ULONG& ulData);
	void GetNext(long& lData);
	void GetNext(float& fData);
	void GetNext(double& dData);
	void GetNext(CString& strData);
	void GetNext(LPVOID pData, UINT unLength);

	// Serializes a CNDKMessage object to a CArchive
	void Serialize(CArchive& archive);

	DECLARE_SERIAL(CNDKMessage)

	////////////////////////////////////////////////////////////////////////////
	// Operators                                                              //
	////////////////////////////////////////////////////////////////////////////

	// Assignment operator.
	const CNDKMessage& operator=(const CNDKMessage& message);

private:
	////////////////////////////////////////////////////////////////////////////
	// Private Attributes                                                     //
	////////////////////////////////////////////////////////////////////////////

	// Returns if the index is valid for the array of elements when setting a
	// value.
	BOOL IsValidSetIndex(long lIndex) const;

	// Returns if the index is valid for the array of elements when getting a
	// value.
	BOOL IsValidGetIndex(long lIndex) const;

private:
	long      m_lId;
	long	  m_lCurrentIndex;
	CElements m_elements;
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线三级电影| 国产精品资源网站| 亚洲女性喷水在线观看一区| 精品国产乱码久久久久久闺蜜| 欧美日韩一区精品| 欧美日韩一区二区三区在线看| 在线免费av一区| 欧美在线观看18| 欧美日韩国产欧美日美国产精品| 在线亚洲一区观看| 欧美色大人视频| 日韩网站在线看片你懂的| 日韩三级av在线播放| 精品国产123| 欧美国产精品专区| 亚洲激情图片小说视频| 亚洲成人1区2区| 久久av老司机精品网站导航| 国产主播一区二区三区| 成人小视频在线| 成人av电影免费观看| 在线观看视频一区二区欧美日韩| 欧美亚洲国产bt| 91麻豆精品国产91久久久久久| 日韩亚洲欧美一区| 国产精品丝袜一区| 午夜精品久久久久久久99水蜜桃| 老司机免费视频一区二区三区| 国产剧情一区二区三区| 一本色道综合亚洲| 日韩欧美亚洲国产另类| 国产精品久久久久久久裸模| 亚洲一区二区三区四区不卡| 九九九精品视频| 91老司机福利 在线| 欧美一区二区三区视频免费播放| 久久久久久亚洲综合| 亚洲综合色自拍一区| 国产成人午夜精品5599| 欧美日韩国产天堂| 亚洲国产精品国自产拍av| 香蕉成人伊视频在线观看| 国产激情91久久精品导航 | 蜜臀av一区二区三区| 国产一区二区三区免费观看| 日本乱人伦aⅴ精品| 久久午夜羞羞影院免费观看| 亚洲精品乱码久久久久久黑人| 美洲天堂一区二卡三卡四卡视频| 99re热这里只有精品视频| 日韩视频在线观看一区二区| 亚洲欧美日韩国产另类专区| 精品一区二区在线播放| 日韩欧美在线观看一区二区三区| 国产欧美日韩中文久久| 日韩国产欧美三级| 欧美图区在线视频| 国产精品久久久久永久免费观看| 免费观看成人av| 欧美日韩国产高清一区二区| 国产精品久久久久久久久久免费看| 蜜桃一区二区三区在线| 欧美日韩欧美一区二区| 亚洲综合色视频| 在线一区二区三区四区五区| 国产精品麻豆网站| 成人免费观看av| 欧美国产日产图区| 国产v综合v亚洲欧| 日本一区二区三区免费乱视频| 韩国精品久久久| 欧美成人女星排行榜| 视频精品一区二区| 欧美日韩电影在线| 午夜精品久久久久久久久久| 欧美欧美午夜aⅴ在线观看| 亚洲成人激情社区| 欧美精品v日韩精品v韩国精品v| 亚洲精品日日夜夜| 欧美日韩一级二级三级| 亚洲小说春色综合另类电影| 欧美私模裸体表演在线观看| 亚洲国产aⅴ天堂久久| 欧美乱妇15p| 久久99久久久久久久久久久| 欧美一区二区精品久久911| 久久不见久久见中文字幕免费| 日韩午夜激情视频| 国产成人精品免费一区二区| 最近中文字幕一区二区三区| 北岛玲一区二区三区四区| 亚洲日本在线天堂| 欧美在线免费观看亚洲| 偷拍与自拍一区| 精品理论电影在线观看 | 成人精品视频网站| 亚洲手机成人高清视频| 欧美日韩精品一区视频| 日本亚洲欧美天堂免费| 国产三级精品三级| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美日韩三级视频| 免费成人av资源网| 中文字幕中文字幕在线一区| 欧美这里有精品| 韩国中文字幕2020精品| 亚洲欧美视频在线观看| 欧美另类高清zo欧美| 狠狠色丁香婷综合久久| 亚洲丝袜另类动漫二区| 欧美男男青年gay1069videost | 亚洲高清久久久| 精品日产卡一卡二卡麻豆| 777色狠狠一区二区三区| 精品一区二区三区香蕉蜜桃| 一区免费观看视频| 精品久久久久香蕉网| www.成人在线| 日本亚洲天堂网| 亚洲美女区一区| 久久久久久一级片| 91麻豆精品国产无毒不卡在线观看| 国产 日韩 欧美大片| 免费在线看成人av| 一区二区三区欧美| 中文字幕av免费专区久久| 91精品欧美久久久久久动漫 | 91福利视频久久久久| 久久超级碰视频| 偷拍与自拍一区| 亚洲人成小说网站色在线| 久久一区二区三区四区| 欧美精品色综合| 色88888久久久久久影院野外| 国产一区二区三区免费观看| 性欧美大战久久久久久久久| 亚洲婷婷综合久久一本伊一区 | a亚洲天堂av| 国产在线视频一区二区三区| 热久久久久久久| 亚洲国产一二三| 亚洲人亚洲人成电影网站色| 国产亲近乱来精品视频| 国产校园另类小说区| 欧美不卡一区二区三区| 欧美一区二区在线免费播放 | 久久夜色精品国产噜噜av| 337p亚洲精品色噜噜| 欧美色爱综合网| 欧美色综合天天久久综合精品| 99精品国产99久久久久久白柏| 国产凹凸在线观看一区二区| 国产激情视频一区二区在线观看| 国内精品免费在线观看| 日韩精品91亚洲二区在线观看 | 国产女主播在线一区二区| 久久午夜电影网| 国产日韩欧美一区二区三区乱码 | 国产电影一区二区三区| 国产成人超碰人人澡人人澡| 国模大尺度一区二区三区| 国产麻豆精品在线观看| 国产高清不卡一区二区| 成人开心网精品视频| 一本大道久久a久久综合婷婷| 99re在线视频这里只有精品| 色偷偷一区二区三区| 欧美三级乱人伦电影| 欧美一区日韩一区| 国产亚洲一区字幕| 日韩美女视频一区二区| 婷婷久久综合九色国产成人| 日本不卡在线视频| 国产成人精品影院| 91免费版在线| 欧美日韩成人综合| 欧美精品一区二区三区很污很色的| 久久久久久久久蜜桃| 亚洲欧美日韩小说| 视频一区中文字幕| 国产精品一区二区三区乱码| 91精品国产91久久久久久一区二区 | 日韩在线一区二区| 国内成人精品2018免费看| 99久久精品国产毛片| 欧美日韩激情一区二区三区| 久久夜色精品国产噜噜av| 亚洲女子a中天字幕| 久久99精品视频| 91老师国产黑色丝袜在线| 日韩一区二区不卡| 亚洲欧美综合在线精品| 午夜精品免费在线| 成人激情电影免费在线观看| 欧美日韩国产大片| 日韩一区在线播放| 国内精品国产成人| 在线播放欧美女士性生活| 国产精品福利影院| 久久精品国产一区二区三区免费看|