📄 stmeditordoc.h
字号:
// STMEditorDoc.h : interface of the CSTMEditorDoc class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_STMEDITORDOC_H__43BA84C5_065B_4184_8905_D5805629F048__INCLUDED_)
#define AFX_STMEDITORDOC_H__43BA84C5_065B_4184_8905_D5805629F048__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "afxtempl.h"
typedef struct _pathinfo{
int begin_id;
int end_id;
}PATHINFO;
typedef struct _bsinfo{
int path_id; //
POINT pos;
char name[31];//max to 15 GB
}BSINFO;
typedef enum {
ACT_BROWSE,
//cross action
ACT_CROSS_PICK,
ACT_CROSS_MOVE,
ACT_CROSS_MOVE_CANCELED,
//path action
ACT_PATH_PICK_BEGIN,
ACT_PATH_PICK_END,
ACT_PATH_PICK_CENTER,
ACT_PATH_CANCEL_PICK,
//bus station action
ACT_BS_PICK,
ACT_BS_MOVE,
//traffic route action
ACT_TR_PICK_BEGIN,
ACT_TR_PICK_NEXT,
//street action
ACT_STREET_PICK_BEGIN,
ACT_STREET_PICK_NEXT,
//address action
ACT_ADDRESS_PICK,
ACT_ADDRESS_MOVE,
} ACTIONTYPE;// action type
typedef enum{
ST_BROWSE,
ST_CROSS,
ST_PATH,
ST_BS,
ST_TRAFFIC,
ST_ADDRESS,
ST_STREET,
}SELTOOL;
typedef enum{
ET_NULL,
ET_CROSS,
ET_BS,
ET_PATH,
ET_ADDRESS,
}ELETYPE; //element type
typedef struct _eleinfo{
ELETYPE eleType;
int index;
}ELEINFO;
typedef struct _crossinfo{
char name[20]; //cross name ,can be empty
POINT pos;
}CROSSINFO;
typedef struct _trafficrouteinfo{
char name[10]; //traffic route name
BYTE type; //traffic route type
int nStations; //station and cross number
ELEINFO *pEI; //element info
}TRAFFICROUTEINFO;
typedef struct _streetinfo{
char name[50]; //street name
int nPathes; //path number
int *pPathID; //path array
}STREETINFO;
typedef struct _addressinfo{
char name[50]; //address name
BYTE type; //address type
POINT pos; //address position
}ADDRESSINFO;
typedef enum elestate{
ES_NORMAL, //normal
ES_FOCUS, //focus
ES_SELECTED, //selected
}ELESTATE; //element state
class CSTMEditorDoc : public CDocument
{
protected: // create from serialization only
CSTMEditorDoc();
DECLARE_DYNCREATE(CSTMEditorDoc)
// Attributes
public:
CString m_Name,m_Author,m_Memory,m_bkfilename;
int m_Width,m_Height;//
int m_Scale;//比例尺
CPicture m_Picture;
ACTIONTYPE m_activeType; //action type
ELEINFO m_focusEI; //focus info
ELEINFO m_preFocusEI; //pre focus info
SELTOOL m_selTool; //selected tool
CArray<ELEINFO,ELEINFO&>m_arrSel; //select element array
CArray<CROSSINFO,CROSSINFO&> m_arrCross;
CArray<BSINFO,BSINFO&> m_arrBS;
CArray<PATHINFO,PATHINFO&> m_arrPath;
CArray<TRAFFICROUTEINFO,TRAFFICROUTEINFO&> m_arrTR; //traffic route
CArray<STREETINFO,STREETINFO&> m_arrStreet; //street
CArray<ADDRESSINFO,ADDRESSINFO&> m_arrAddress; //address
// Operations
public:
BOOL m_bViewBK,m_bViewCross,m_bViewPath,m_bViewBS,m_bViewAddress;
RECT CalcCrossRect(POINT pt);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSTMEditorDoc)
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
//}}AFX_VIRTUAL
// Implementation
public:
void AddCrossToPath(int index,CROSSINFO ci);
void MoveAddress(int index,POINT pt);
BOOL IsPathInTrafficRoute(PATHINFO pi,TRAFFICROUTEINFO tri);
void RemoveStreet(int index);
void RemoveAddress(CRgn &effectrgn,int index);
void CalcAddressRgn(CRgn &addressrgn,int index);
RECT CalcAddressRect(POINT pt);
int AddAddress(ADDRESSINFO ai);
int AddStreet(STREETINFO si);
void Deselect();
void SelectAddress(int index);
void SelectStreet(int index);
void SelectTraffic(int index);
void SelectBS(int index);
void SelectPath(int index);
void SelectCross(int index);
void AddSelectedElement(ELEINFO *pEI,int count);
void RemoveTR(int index);
int AddTR(TRAFFICROUTEINFO tri);
BOOL IsPathExisted(PATHINFO pi);
void SelectElements(ELEINFO *ei,int count);
ELESTATE GetElementState(ELEINFO ei);
//get the single element range
void CalcCrossRgn(CRgn &crossrgn, int index);
void CalcPathRgn(CRgn &pathrgn, int index);
void CalcBSRgn(CRgn &bsrgn,int index);
//get the element's range and the elements ranges which attach to
void GetCrossEffectRgn(CRgn &effectrgn,int index);
void GetPathEffectRgn(CRgn& effectrgn,int index);
BOOL CanHilite(ELETYPE et);
RECT CalcBSRect(POINT pt);
BOOL m_bFocusChanged;
int AddBS(BSINFO bsi);
int AddPath(PATHINFO pi);
int AddCross(CROSSINFO ci);
BOOL GetFocusInfo(POINT pt);
void MoveBS(int index,POINT newPt);
void MoveCross(int index,POINT newPos);
void RemoveBS(CRgn &effectrgn,int index);
void RemovePath(CRgn &effectrgn,int index);
void RemoveCross(CRgn &effectrgn,int index);
virtual ~CSTMEditorDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
private:
BOOL FindMaxSeg(int path_id,TRAFFICROUTEINFO tri,int &begin_index,int &end_index);
void ClearDataBuffer();
void RemoveStreetInfo();
void RemoveTrafficRouteInfo();
void AddRgn(CRgn &rgnSrc,const CRgn &rgnAdd);
// Generated message map functions
protected:
//{{AFX_MSG(CSTMEditorDoc)
afx_msg void OnMapProp();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STMEDITORDOC_H__43BA84C5_065B_4184_8905_D5805629F048__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -