www.pudn.com > mfcopentree.rar > MfcopenView.h
// MfcopenView.h : interface of the CMfcopenView class
//武汉华中科技大学,2002,(C)版权所有
//作者:金德才 联系方式:iskyflying@163.com
//请不要将本软件的任何一部分用于商业用途
//如果您觉得任何地方有用或者错误,请告诉作者,谢谢!
//如果你想引用部分源程序,请注明作者信息
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_MFCOPENVIEW_H__ADBDC02C_FEAC_4DA1_9478_3ED9479FA892__INCLUDED_)
#define AFX_MFCOPENVIEW_H__ADBDC02C_FEAC_4DA1_9478_3ED9479FA892__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <gl\gl.h> // Header File For The OpenGL32 Library
#include <gl\glu.h> // Header File For The GLu32 Library
#include <gl\glaux.h> // Header File For The Glaux Library
#include <gl\glut.h>
#include "3DMath.h"
#include "myfont.h"
#include "LinkPoint.h"
#include "ParaSetting.h"
class CMyFont;
class CMfcopenView : public CView
{
protected: // create from serialization only
CMfcopenView();
DECLARE_DYNCREATE(CMfcopenView)
// Attributes
public:
CMfcopenDoc* GetDocument();
CStatusBar* pStatus;
public:
HGLRC m_primeHrc;
CPoint m_oldpt;//前一时刻的鼠标点
CPoint m_current;//当前的鼠标点
public: //all the used variables in this app's view
STLOctTree *ganshe_first, *ganshe_second;
float m_lineganshe[2][3];//记录干涉直线
float m_triangleganshe[3][3];//记录干涉三角形
CPoint m_zoomcenter;//缩放中心点
float m_fleft, m_fright, m_fbottom, m_ftop;//投影的图形区域
float m_fstepx, m_fstepy;//右键平移的增量
float m_fanglex, m_fangley, m_fanglez;//右键旋转的增量角度
float m_fxtra, m_fytra;//最后平移量
float m_fxrot;
float m_fyrot;
float m_fzrot;//最后角度
float m_scale;//右键放大倍数
bool m_blmousedown;//左键按下状态开关
bool m_bfileopen;//文件打开状态开关
float LightAmbient[4]; //光照参数
float LightDiffuse[4];
float LightPosition[4];
float LightSpecular[4];
float shininess;
float mat_amb_diff[100][4];//材质环境和散射光
float mat_amb_diff_ganshe[4];
float mat_amb_diff_org[4];
UINT m_popmenu;//右键菜单的ID
UINT m_view;//哪一视图
HCURSOR m_hcursor;//当前鼠标HANDLE
int writer;//output写的 次数
int ganshe_writer;//干涉信息写入记号
CParaSetting * para;
bool m_bFakOpen;//FAK文件打开开关
float m_fganshemove[2][3];//到干涉时两个干涉实体的移动量
BOOL m_bviewganshe;//查看干涉开关
long m_lgcubenumber;//记录画了多少cube
int itree;//第几个tree
int count;//记录选择反馈的操作
int m_movecount;
float m_fpasstime;
bool m_bIsPrint;
BOOL m_bcutplane;
int m_iObjectId;
float m_fprecision;
BOOL m_bviewmess;
STLOctTree * root[10];
BOOL m_bcut2;
float m_fd;
CVector3 m_xishu;
BOOL m_bcut1;
float m_ortho_bias_x, m_ortho_bias_y;
BOOL m_brefresh;
float m_disp_radio;
UINT m_bfindline;
UINT g_Texture[5];
CPoint m_RectZoomOldpoint;
float m_ftime_bias_play;
float m_ftime_bias_repeat;
UINT m_umodelview;
int m_itrannumber[100];
int m_istlmove[100];
BOOL m_brepeat;
BOOL m_btempstop;
BOOL m_banimalfileopen;
BOOL m_btypehide[100];
BOOL m_ballhide;
float m_fInformation[100][4][3];
float m_fglobaltime;
BOOL m_bplay;//PLAY开关
float m_ftimes;//速度控制
float m_ftimemove[100][4][2];//运动时序记录
float m_fBoxMax;//最大的边长,单位化用
float m_fsteptranslate[100][4][3];//平移时每轴的步进
UINT m_itreeflag;//被激活的节点
int m_ilflag[100]; //记录实体隐藏的开关变量
float m_fmove[100][4][4];//前三个代表物体的终点位置,最后一个是动与停的开关
float m_fboxsize[100][3];//每个实体的box三个分量
float m_fcenter[100][3];//每个实体的中心点
float m_forigincenter[100][3];//初始中心位置
float m_fsectcenter[100][3];//每个实体的阶段中心位置
protected:
HGLRC m_hRC;
HDC m_hDC;
private:
CMyFont myfont;
public:
bool InitGL(void);
bool DrawGLScene(void);
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMfcopenView)
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
//}}AFX_VIRTUAL
// Implementation
public:
void BuildFakList(int num);
void ViewGanshe();
void ResetData();
void CreateTree(STLArray *data, int i);
BOOL NonSynOctTreeCheck(STLOctTree *root, STLOctTree *leaf, float x[3], float y[3]);
void DrawCubeWeb(STLOctTree *root);
void DestroyTree(STLOctTree *root);
BOOL OctTreeCheck(STLOctTree *first, STLOctTree *second, float x[3], float y[3]);
Link * FindSketch(Link *dest, Link *back);
void ShowSection(int i, int rk);
void CreateTexture(UINT textureArray[], LPSTR strFileName, int textureID);
BOOL DetailCheck(int i, int j);
BOOL InterfaceCheck(int r);
int RetrieveObjectID(int x, int y);
void ProcessData(STLArray *data);//STL文件的数据处理
void BuildDispList(int flag);//建立显示列表
virtual ~CMfcopenView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(CMfcopenView)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnTranslate();
afx_msg void OnUpdateTranslate(CCmdUI* pCmdUI);
afx_msg void OnUpdateRotate(CCmdUI* pCmdUI);
afx_msg void OnRotate();
afx_msg void OnZoom();
afx_msg void OnUpdateZoom(CCmdUI* pCmdUI);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnTreeColor();
afx_msg void OnUpdateTreeColor(CCmdUI* pCmdUI);
afx_msg void OnTreeHide();
afx_msg void OnUpdateTreeHide(CCmdUI* pCmdUI);
afx_msg void OnTreeTranslate();
afx_msg void OnUpdateTreeTranslate(CCmdUI* pCmdUI);
afx_msg void OnPlay();
afx_msg void OnUpdatePlay(CCmdUI* pCmdUI);
afx_msg void OnTreeInformation();
afx_msg void OnUpdateTreeInformation(CCmdUI* pCmdUI);
afx_msg void OnTempstop();
afx_msg void OnUpdateTempstop(CCmdUI* pCmdUI);
afx_msg void OnRepeat();
afx_msg void OnUpdateRepeat(CCmdUI* pCmdUI);
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
afx_msg void OnViewFont();
afx_msg void OnUpdateViewFont(CCmdUI* pCmdUI);
afx_msg void OnViewLeft();
afx_msg void OnUpdateViewLeft(CCmdUI* pCmdUI);
afx_msg void OnViewTop();
afx_msg void OnUpdateViewTop(CCmdUI* pCmdUI);
afx_msg void OnViewPoints();
afx_msg void OnUpdateViewPoints(CCmdUI* pCmdUI);
afx_msg void OnViewTriangles();
afx_msg void OnUpdateViewTriangles(CCmdUI* pCmdUI);
afx_msg void OnViewLines();
afx_msg void OnUpdateViewLines(CCmdUI* pCmdUI);
afx_msg void OnViewRefresh();
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnRectScale();
afx_msg void OnFindLine();
afx_msg void OnUpdateFindLine(CCmdUI* pCmdUI);
afx_msg void OnFindPort();
afx_msg void OnUpdateFindPort(CCmdUI* pCmdUI);
afx_msg void OnToolbar3();
afx_msg void OnUpdateToolbar3(CCmdUI* pCmdUI);
afx_msg void OnViewMess();
afx_msg void OnUpdateViewMess(CCmdUI* pCmdUI);
afx_msg void OnCreateTree();
afx_msg void OnUpdateCreateTree(CCmdUI* pCmdUI);
afx_msg void OnFileClear();
afx_msg void OnUpdateRectScale(CCmdUI* pCmdUI);
afx_msg void OnViewGanshe();
afx_msg void OnUpdateViewGanshe(CCmdUI* pCmdUI);
afx_msg void OnFit();
afx_msg void OnUpdateFit(CCmdUI* pCmdUI);
afx_msg void OnDestroy();
afx_msg void OnViewAllPara();
afx_msg void OnUpdateViewAllPara(CCmdUI* pCmdUI);
afx_msg void OnViewBack();
afx_msg void OnUpdateViewBack(CCmdUI* pCmdUI);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
#ifndef _DEBUG // debug version in MfcopenView.cpp
inline CMfcopenDoc* CMfcopenView::GetDocument()
{ return (CMfcopenDoc*)m_pDocument; }
#endif
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MFCOPENVIEW_H__ADBDC02C_FEAC_4DA1_9478_3ED9479FA892__INCLUDED_)