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

📄 elevatorthread.h

📁 电梯调度模拟,有mfc界面展现5部电梯的相互调度
💻 H
字号:
// ElevatorThread.h : 头文件
//

#pragma once
#include "MyVariousState.h"
#include "InnerWaitQueue.h"
#include "MyWaitQueue.h"
//利用每部电梯模拟一个线程

typedef struct {
	int m_iElevatorNo;
	int m_iCurPassengerNum;
	int m_iCurFloor;
	int m_iNextDestFloor;
	enum state m_eCurState;
	enum direction m_eBackupDirection;
	bool m_bCanSchedule;	

} MyTCB;


// CMyElevatorThread 对话框
class CMyElevatorThread : public CDialog
{
public:
	CMyElevatorThread(CWnd* pParent = NULL);	// 标准构造函数
	CMyElevatorThread(int iElevatorNo, CWnd* pParent/*=NULL*/);


	// 对话框数据
	enum { IDD = IDD_MYELEVATOR_DIALOG };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持
private:
	MyButton* m_pButton[MAX_FLOOR_NUM];
	CStatic* m_pLabel[MAX_FLOOR_NUM];
	char str_arrElevatorName[MAX_ELEVATOR_NUM];
	CString stateDespArr[8];



	enum state m_eOldState;
	MyTCB m_TCB;
	CUpInnerWaitQueue* m_mycUpInnerWaitQueue;
	CDownInnerWaitQueue* m_mycDownInnerWaitQueue;
	CWnd* m_pParent;

	MyButton m_btnopendoor;
	MyButton m_btnclosedoor;
	MyButton m_btnarlarm;
	MyButton m_btnenter;
	MyButton m_btnleave;
	MyButton m_btntrouble;
	MyButton m_btncorrect;
public:
	CColorStaticST	m_ElevatorBox;
	CColorStaticST 	m_Elevatordestination;
	CStatic m_conPsgNum;

	// 实现
public:
	void acceptReq(sOuterRequest& tmpOuterRequest);//电梯接受外部主控中心的请求
	bool isOverWeight() { return m_TCB.m_iCurPassengerNum > MAX_PASSENGER_NUM; }
	bool isMalFunction() { return m_TCB.m_eCurState==MAL_FUNCTION; }	
	int getElevatorNo() { return m_TCB.m_iElevatorNo; }
	int getCurPassengerNum() { return m_TCB.m_iCurPassengerNum; }
	int getCurFloor() { return m_TCB.m_iCurFloor; }
	enum state getState() { return m_TCB.m_eCurState; }
	bool canSchedule() { return m_TCB.m_bCanSchedule; }
	void setState(enum state eCurState) { m_TCB.m_eCurState =eCurState; }
	void enableRelateBtn(enum state eCurState, int iFloorNo);//通知主控中心电梯到达
	void gotoNextDest();



protected:
	HICON m_hIcon;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	//	void OnTimer(UINT nIDEvent); 
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnInnerBtnClk(UINT nID);//处理电梯内部的按钮的任务
	//afx_msg void OnBnClickedButtonTrouble();
	afx_msg void OnTimer(UINT nIDEvent);	
	afx_msg void OnDestroy();
	afx_msg void openDoor();
	afx_msg void closeDoor();
	afx_msg void OnBtnCreateFault();
	afx_msg void OnBtnCorrectFault();
	afx_msg void OnBtnPsgEnter();
	afx_msg void OnBtnPsgLeave();
	afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
};


class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

	// 对话框数据
	enum { IDD = IDD_ABOUTBOX };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

	// 实现
protected:
	DECLARE_MESSAGE_MAP()
};

⌨️ 快捷键说明

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