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