📄 commctl.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 + -