⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 commctl.h

📁 cdma-cd的VC++源代码cdma-cd的VC++源代码
💻 H
字号:
#if !defined(AFX_COMMCTL_H__5044B4FE_5C6A_427B_B0D4_85CCA1EB75BD__INCLUDED_)
#define AFX_COMMCTL_H__5044B4FE_5C6A_427B_B0D4_85CCA1EB75BD__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Commctl.h : header file
//

/////////////////////////////////////////////////////////////////////////////
const int MAX_SIGNALS = 10;
const int NUM_STATIONS = 5;

class Signal;
class Station;


class Counter 
{
public:
	Counter( int start );
	Counter(void);

	~Counter(void);

public:
	void decrement();
	void increment(); 
	int getCount();
	void setCount(int count);

private:
	int myCount;
};

// the medium class which simulates the medium(-bus)
class Medium 
{
public:
	Medium();
	virtual ~Medium();

public:
	BOOL isInInterval(int value, int start, int end);
	void setMediumIdle();
	int getBusLength();
	Signal** getSignals();
	BOOL isCollision(int station, int position);
	BOOL isFree(int position);
	void sleep(int time);
	BOOL send( int station, int position, int frameSize);
	void update();

private:
	int myBusLength;// in meters
	Signal* mySignals[MAX_SIGNALS];
};

// the left and right parts of a signal are simualated
class Part 
{
public:
	Part( int start, int end, int offset, int frameSize, Medium* medium );
	void setCollisionFlag( BOOL flag );
	BOOL getCollisionFlag();
	BOOL getDoneFlag();
	int getStart();
	int getEnd(); 
	BOOL isSent(); 
	void update(); 

public:
	BOOL myDoneFlag;

private:
	Medium* m_pMyMedium;
	int myMaxFrameSize;
	int myLength;
	int myOffset;
	int myStart;
	int myEnd;
	BOOL myCollisionFlag;
};

// the various kinds of (messages for transmission) signals are simulated here

class Signal
{
public:
	Signal(int stationId, int position, int frameSize, Medium* medium);
	virtual ~Signal();

public:
	int getStationId();
	void setIdle();
	Part* getLeftPart();
	Part* getRightPart();
	void update();
	BOOL isDone();
	BOOL isCollision();
	BOOL isSent();

private:
	Part* m_pMyLeftPart;
	Part* m_pMyRightPart;
	int myStationId;
};

// the network class which simulates the network

class Network
{
public:
	Network();
	virtual ~Network();

public:
	void stop();
	void addStation(int x);
	int convertPositionToPixel(int position);
	void setFrameSize(int size);
	int getFrameSize();
	void update();
	void paint(CDC* pDC);
	void OnLButtonDown(UINT nFlags, CPoint point);

private:
	Medium* m_pMyMedium;
	Station* myStations[NUM_STATIONS];
	int	myFrameSize;
	int m_nCount;
	HANDLE handleArray[NUM_STATIONS];
};

class Station
{
public:
	Station(int id, int position, Network* network, Medium* medium);
	virtual ~Station();

public:
	void setSendRequest( BOOL flag );
	int getState();
	void setState(int x);
	int getBackoffCount();
	int getBackoffRemain();
	int getPosition();
	void sleep(int time);
	void backoff(int count);
	void update();
	BOOL send();
	void run();
	void SetSenting(BOOL bSet);
	BOOL GetIsSenting(void);

private:
	Counter myCounter;
	Medium* m_pMyMedium;
	Network* m_pMyNetwork;
	int myBackoffCount;
	int myPosition;
	int myState;
	int myId;
	BOOL mySendRequest;
	BOOL m_bIsSenting;
};

inline void Station::SetSenting(BOOL bSet)
{
	m_bIsSenting = bSet;
}

inline BOOL Station::GetIsSenting(void)
{
	return m_bIsSenting;
}

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_COMMCTL_H__5044B4FE_5C6A_427B_B0D4_85CCA1EB75BD__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -