MainFrm.h
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:8k
源码类别:

界面编程

开发平台:

Visual C++

  1. // MainFrm.h : interface of the CMainFrame class
  2. //
  3. /////////////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_MAINFRM_H__8AD8EDA0_FE43_4657_B159_597A63DD8A98__INCLUDED_)
  5. #define AFX_MAINFRM_H__8AD8EDA0_FE43_4657_B159_597A63DD8A98__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "ChildView.h"
  10. #if (!defined __EXT_TEMPL_H)
  11. #include <ExtTempl.h>
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CSimpleSplashWnd window
  15. class CSimpleSplashWnd : public CWnd
  16. {
  17. protected:
  18. CWnd m_wndInvisibleParent;
  19. CBitmap m_bitmap;
  20. CSize m_sizeBitmap;
  21. CString m_sStatusText;
  22. // Construction
  23. public:
  24. CSimpleSplashWnd();
  25. CSimpleSplashWnd(
  26. CWnd * pWndParent,
  27. UINT nBitmapID
  28. );
  29. // Attributes
  30. public:
  31. // Operations
  32. public:
  33. bool Create(
  34. CWnd * pWndParent,
  35. UINT nBitmapID
  36. );
  37. static bool RegisterSplashWndClass();
  38. void SetStatusText(
  39. LPCTSTR sStatusText
  40. );
  41. // Overrides
  42. // ClassWizard generated virtual function overrides
  43. //{{AFX_VIRTUAL(CSimpleSplashWnd)
  44. public:
  45. virtual BOOL DestroyWindow();
  46. protected:
  47. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  48. //}}AFX_VIRTUAL
  49. // Implementation
  50. public:
  51. virtual ~CSimpleSplashWnd();
  52. // Generated message map functions
  53. protected:
  54. //{{AFX_MSG(CSimpleSplashWnd)
  55. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  56. afx_msg void OnPaint();
  57. afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
  58. afx_msg UINT OnNcHitTest(CPoint point);
  59. afx_msg void OnClose();
  60. //}}AFX_MSG
  61. DECLARE_MESSAGE_MAP()
  62. }; // class CSimpleSplashWnd
  63. #define GL_VIEWS_SPLASHWND_WNDCLASS _T("GLViewsSplashWnd")
  64. /////////////////////////////////////////////////////////////////////////////
  65. // CSimpleThinFrame window
  66. class CSimpleThinFrame : public CWnd
  67. {
  68. bool m_bAutoDestroyOnPostNcDestroy;
  69. public:
  70. CSimpleThinFrame()
  71. : m_bAutoDestroyOnPostNcDestroy( false )
  72. {
  73. }
  74. BOOL Create(
  75. CWnd * pParentWnd,
  76. UINT nID
  77. )
  78. {
  79. return
  80. CWnd::Create(
  81. AfxRegisterWndClass(0), NULL,
  82. WS_CHILD|WS_VISIBLE,
  83. CRect( 0,0,0,0 ),
  84. pParentWnd,
  85. nID,
  86. NULL
  87. );
  88. }
  89. BOOL CreateDynamicThinFrame(
  90. CWnd * pChildWnd
  91. )
  92. {
  93. ASSERT( !m_bAutoDestroyOnPostNcDestroy );
  94. ASSERT_VALID( pChildWnd );
  95. CWnd * pParentWnd = pChildWnd->GetParent();
  96. ASSERT_VALID( pParentWnd );
  97. UINT nID = pChildWnd->GetDlgCtrlID();
  98. if( ! Create( pParentWnd, nID ) )
  99. {
  100. ASSERT( FALSE );
  101. return FALSE;
  102. }
  103. pChildWnd->SetParent( this );
  104. m_bAutoDestroyOnPostNcDestroy = true;
  105. return TRUE;
  106. }
  107. virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
  108. {
  109. switch( message )
  110. {
  111. case WM_SETFOCUS:
  112. {
  113. HWND hWndChild = ::GetWindow( GetSafeHwnd(), GW_CHILD );
  114. if( hWndChild != NULL )
  115. {
  116. ::SetFocus( hWndChild );
  117. return 0;
  118. }
  119. }
  120. break;
  121. case WM_SIZE:
  122. if( wParam != SIZE_MINIMIZED )
  123. {
  124. HWND hWndChild = ::GetWindow( m_hWnd, GW_CHILD );
  125. if( hWndChild != NULL )
  126. ::MoveWindow(
  127. hWndChild,
  128. 0,
  129. 0,
  130. LOWORD(lParam),
  131. HIWORD(lParam),
  132. TRUE
  133. );
  134. }
  135. return 0;
  136. case WM_NCCALCSIZE:
  137. {
  138. NCCALCSIZE_PARAMS * pNCCSP =
  139. reinterpret_cast < NCCALCSIZE_PARAMS * > ( lParam );
  140. ASSERT( pNCCSP != NULL );
  141. CRect rcWnd( pNCCSP->rgrc[0] );
  142. rcWnd.DeflateRect( 2, 2 );
  143. ::CopyRect( &(pNCCSP->rgrc[0]), rcWnd );
  144. return 0;
  145. }
  146. case WM_NCPAINT:
  147. {
  148. CRect rcChildWnd, rcClient;
  149. GetWindowRect( &rcChildWnd );
  150. GetClientRect( &rcClient );
  151. ClientToScreen( &rcClient );
  152. if( rcChildWnd == rcClient )
  153. return 0;
  154. CPoint ptDevOffset = -rcChildWnd.TopLeft();
  155. rcChildWnd.OffsetRect( ptDevOffset );
  156. rcClient.OffsetRect( ptDevOffset );
  157. CWindowDC dc( this );
  158. ASSERT( dc.GetSafeHdc() != NULL );
  159. dc.ExcludeClipRect( &rcClient );
  160. dc.FillSolidRect(
  161. &rcChildWnd,
  162. g_PaintManager->GetColor( COLOR_3DFACE, this )
  163. );
  164. COLORREF clrThinFrame = g_PaintManager->GetColor( COLOR_3DSHADOW, this );
  165. dc.Draw3dRect(
  166. &rcChildWnd,
  167. clrThinFrame,
  168. clrThinFrame
  169. );
  170. return 0;
  171. }
  172. } // switch( message )
  173. return CWnd::WindowProc(message,wParam,lParam);
  174. }
  175. virtual void PostNcDestroy()
  176. {
  177. CWnd::PostNcDestroy();
  178. if( m_bAutoDestroyOnPostNcDestroy )
  179. delete this;
  180. }
  181. }; // class CSimpleThinFrame
  182. /////////////////////////////////////////////////////////////////////////////
  183. // CSimpleHtmlCtrl window
  184. class CSimpleHtmlCtrl : public CWnd
  185. {
  186. // Construction
  187. public:
  188. CSimpleHtmlCtrl();
  189. // Attributes
  190. public:
  191. protected:
  192. IWebBrowser2 * m_pBrowser;
  193. // Operations
  194. public:
  195. bool Create( CWnd * pWndParent );
  196. void NavigateURL( LPCTSTR lpszURL );
  197. void NavigateResourceID(
  198. UINT nResourceID
  199. );
  200. // Overrides
  201. // ClassWizard generated virtual function overrides
  202. //{{AFX_VIRTUAL(CSimpleHtmlCtrl)
  203. //}}AFX_VIRTUAL
  204. // Implementation
  205. public:
  206. virtual ~CSimpleHtmlCtrl();
  207. // Generated message map functions
  208. protected:
  209. //{{AFX_MSG(CSimpleHtmlCtrl)
  210. // NOTE - the ClassWizard will add and remove member functions here.
  211. //}}AFX_MSG
  212. DECLARE_MESSAGE_MAP()
  213. };
  214. /////////////////////////////////////////////////////////////////////////////
  215. // CMainFrame window
  216. class CMainFrame : public CExtNCW < CFrameWnd >
  217. {
  218. void _ResetCameras( bool bLockViews );
  219. public:
  220. CMainFrame();
  221. protected: 
  222. DECLARE_DYNAMIC(CMainFrame)
  223. // Attributes
  224. public:
  225. private:
  226. // window placement persistence
  227. WINDOWPLACEMENT m_dataFrameWP;
  228. // Operations
  229. public:
  230. void SerializeCameraState(
  231. LPCTSTR sProfileName,
  232. LPCTSTR sSectionNameCompany,
  233. LPCTSTR sSectionNameProduct,
  234. bool bSave
  235. );
  236. void SerializeCameraState(
  237. CArchive & ar
  238. );
  239. // Overrides
  240. // ClassWizard generated virtual function overrides
  241. //{{AFX_VIRTUAL(CMainFrame)
  242. public:
  243. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  244. virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
  245. virtual BOOL PreTranslateMessage(MSG* pMsg);
  246. virtual BOOL DestroyWindow();
  247. virtual void ActivateFrame(int nCmdShow = -1);
  248. //}}AFX_VIRTUAL
  249. // Implementation
  250. public:
  251. virtual ~CMainFrame();
  252. #ifdef _DEBUG
  253. virtual void AssertValid() const;
  254. virtual void Dump(CDumpContext& dc) const;
  255. #endif
  256. void SyncCameraFovValue( int nCamIdx, int nFovIdx );
  257. void SyncCameraFovValue();
  258. protected:  // control bar embedded members
  259. CExtStatusControlBar  m_wndStatusBar;
  260. CExtMenuControlBar    m_wndMenuBar;
  261. CExtThemeSwitcherToolControlBar m_wndToolBarUiLook;
  262. CExtControlBar    m_wndResizableBar0;
  263. CExtControlBar    m_wndResizableBar1;
  264. CExtControlBar    m_wndResizableBar2;
  265. CExtControlBar    m_wndResizableBar3;
  266. CChildView    m_wndViewCam0, m_wndViewCam1, m_wndViewCamMain;
  267. CObjectHierarchyTreeCtrl m_wndObjectHierarchyTree;
  268. CImageList m_ilObjectHierarchyTree;
  269. CSimpleHtmlCtrl m_wndHelpHtmlCtrl;
  270. // Generated message map functions
  271. protected:
  272. //{{AFX_MSG(CMainFrame)
  273. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  274. afx_msg void OnSetFocus(CWnd *pOldWnd);
  275. afx_msg void OnAnimate();
  276. afx_msg void OnUpdateAnimate(CCmdUI* pCmdUI);
  277. afx_msg void OnShowCameras();
  278. afx_msg void OnUpdateShowCameras(CCmdUI* pCmdUI);
  279. afx_msg void OnShowMirror();
  280. afx_msg void OnUpdateShowMirror(CCmdUI* pCmdUI);
  281. afx_msg void OnShowAviPlayer();
  282. afx_msg void OnUpdateShowAviPlayer(CCmdUI* pCmdUI);
  283. afx_msg void OnResetCameras();
  284. afx_msg void OnShowOuterObjects();
  285. afx_msg void OnUpdateShowOuterObjects(CCmdUI* pCmdUI);
  286. afx_msg void OnShowTextObjects();
  287. afx_msg void OnUpdateShowTextObjects(CCmdUI* pCmdUI);
  288. afx_msg void OnShowCubeObjects();
  289. afx_msg void OnUpdateShowCubeObjects(CCmdUI* pCmdUI);
  290. afx_msg void OnShowPlanetObjects();
  291. afx_msg void OnUpdateShowPlanetObjects(CCmdUI* pCmdUI);
  292. //}}AFX_MSG
  293. afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
  294. afx_msg BOOL OnBarCheck(UINT nID);
  295. DECLARE_MESSAGE_MAP()
  296. };
  297. /////////////////////////////////////////////////////////////////////////////
  298. //{{AFX_INSERT_LOCATION}}
  299. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  300. #endif // !defined(AFX_MAINFRM_H__8AD8EDA0_FE43_4657_B159_597A63DD8A98__INCLUDED_)