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

界面编程

开发平台:

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. #include <Resources/Resource.h>
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CDemoHtmlCtrl window
  16. class CDemoHtmlCtrl : public CWnd
  17. {
  18. // Construction
  19. public:
  20. CDemoHtmlCtrl();
  21. DECLARE_DYNAMIC( CDemoHtmlCtrl );
  22. // Attributes
  23. public:
  24. bool m_bReflectParentSizing:1;
  25. protected:
  26. IWebBrowser2 * m_pBrowser;
  27. // Operations
  28. public:
  29. bool Create(
  30. CWnd * pWndParent,
  31. CRect rectInit = CRect(0,0,0,0)
  32. );
  33. void GoBack();
  34. void GoForward();
  35. void Refresh();
  36. void NavigateURL( LPCTSTR lpszURL );
  37. void NavigateResourceID(
  38. UINT nResourceID
  39. );
  40. // Overrides
  41. // ClassWizard generated virtual function overrides
  42. //{{AFX_VIRTUAL(CDemoHtmlCtrl)
  43. //}}AFX_VIRTUAL
  44. // Implementation
  45. public:
  46. virtual ~CDemoHtmlCtrl();
  47. // Generated message map functions
  48. protected:
  49. //{{AFX_MSG(CDemoHtmlCtrl)
  50. // NOTE - the ClassWizard will add and remove member functions here.
  51. //}}AFX_MSG
  52. DECLARE_MESSAGE_MAP()
  53. };
  54. /////////////////////////////////////////////////////////////////////////////
  55. // CMyResizableInFixedModeBar
  56. class CMyResizableInFixedModeBar : public CExtControlBar
  57. {
  58. public:
  59. virtual bool IsFixedMode() const
  60. {
  61. return false;
  62. }
  63. virtual bool IsFixedDockStyle() const
  64. {
  65. return true;
  66. }
  67. protected:
  68. virtual bool _IsShowContentWhenDragging() const
  69. {
  70. return true;
  71. }
  72. virtual bool _IsShowContentWhenRowResizing() const
  73. {
  74. return true;
  75. }
  76. virtual bool _IsShowContentWhenRowRecalcing() const
  77. {
  78. return true;
  79. }
  80. virtual bool _CanDockToInnerCircles() const
  81. {
  82. return false;
  83. }
  84. virtual bool _CanDockToTabbedContainers(
  85. CExtControlBar * pDestBar
  86. ) const
  87. {
  88. pDestBar;
  89. return false;
  90. }
  91. virtual bool _GetFullRowMode() const
  92. {
  93. return true;
  94. }
  95. class CNcBackForwardNavigationBtn : public CExtBarNcAreaButton
  96. {
  97. public:
  98. bool m_bSwitchToPrevPage:1;
  99. CNcBackForwardNavigationBtn(
  100. CExtControlBar * pBar,
  101. bool bSwitchToPrevPage
  102. )
  103. : CExtBarNcAreaButton( pBar )
  104. , m_bSwitchToPrevPage( bSwitchToPrevPage )
  105. {
  106. }
  107. virtual bool OnQueryVisibility() const
  108. {
  109. ASSERT_VALID( this );
  110. if( !CExtBarNcAreaButton::OnQueryVisibility() )
  111. return false;
  112. return true;
  113. }
  114. virtual void OnNcAreaDraw( CDC & dc )
  115. {
  116. ASSERT_VALID( this );
  117. ASSERT( dc.GetSafeHdc() != NULL );
  118. ASSERT( OnQueryVisibility() );
  119. if( m_rc.IsRectEmpty() )
  120. return;
  121. m_bDisabled = true;
  122. CWnd * pWnd = GetBar()->GetWindow(GW_CHILD);
  123. if( pWnd != NULL )
  124. {
  125. ASSERT_KINDOF( CDemoHtmlCtrl, pWnd );
  126. m_bDisabled = false;
  127. }
  128. NcDrawDefault(
  129. dc,
  130. m_bSwitchToPrevPage
  131. ? CExtPaintManager::__DCBT_ARROW_LEFT_L
  132. : CExtPaintManager::__DCBT_ARROW_RIGHT_L
  133. );
  134. }
  135. virtual UINT OnNcAreaHitTest( CPoint point )
  136. {
  137. ASSERT_VALID( this );
  138. UINT nHT = CExtBarNcAreaButton::OnNcAreaHitTest( point );
  139. if( nHT == HTCLIENT )
  140. return HTCLIENT; // not inside nc-button
  141. return HTMAXBUTTON; // non HTCLIENT
  142. }
  143. virtual bool OnNcAreaClicked( CPoint point )
  144. {
  145. ASSERT_VALID( this );
  146. if( !m_rc.PtInRect(point) )
  147. return false; // continue asking nc-buttins
  148. CWnd * pWnd = GetBar()->GetWindow(GW_CHILD);
  149. if( pWnd != NULL )
  150. {
  151. ASSERT_VALID( pWnd );
  152. CDemoHtmlCtrl * pDemoHtmlCtrl =
  153. STATIC_DOWNCAST( CDemoHtmlCtrl, pWnd );
  154. if( m_bSwitchToPrevPage )
  155. pDemoHtmlCtrl->GoBack();
  156. else
  157. pDemoHtmlCtrl->GoForward();
  158. } // if( pWnd != NULL )
  159. return true;
  160. }
  161. __EXT_MFC_INT_PTR OnToolHitTest(
  162. CPoint point,
  163. TOOLINFO * pTI
  164. )
  165. {
  166. ASSERT_VALID( this );
  167. point; // shuld be in button area
  168. return
  169. DoDefaultReflectForToolHitTest(
  170. pTI,
  171. m_bSwitchToPrevPage ? IDS_CBNCAREA_PREV : IDS_CBNCAREA_NEXT,
  172. m_bSwitchToPrevPage ? _T("Previous page") : _T("Next page")
  173. );
  174. }
  175. void OnNcAreaReposition(
  176. CExtBarNcAreaButton * pPrevBtn
  177. )
  178. {
  179. pPrevBtn;
  180. ASSERT_VALID( this );
  181. bool bGripperAtTop = false;
  182. if( !GetBarNcAreaInfo( &m_rc, NULL, &bGripperAtTop ) )
  183. return;
  184. const int _nGapToBordersH = 2;
  185. const int _nGapToBordersV = 3;
  186. const int _nGapBetweenButtons = 3;
  187. ASSERT( bGripperAtTop );
  188. m_rc.DeflateRect(
  189. _nGapToBordersH,
  190. _nGapToBordersV
  191. );
  192. m_rc.right = m_rc.left + m_rc.Height();
  193. m_rc.OffsetRect( 1, 0 );
  194. if( !m_bSwitchToPrevPage )
  195. m_rc.OffsetRect(
  196. m_rc.Width() + _nGapBetweenButtons,
  197. 0
  198. );
  199. }
  200. }; // class CNcBackForwardNavigationBtn
  201. virtual void OnNcAreaButtonsReinitialize()
  202. {
  203. INT nCountOfNcButtons = NcButtons_GetCount();
  204. if( nCountOfNcButtons > 0 )
  205. return;
  206. NcButtons_Add( new CExtBarNcAreaButtonClose(this) );
  207. NcButtons_Add( new CNcBackForwardNavigationBtn(this,false) );
  208. NcButtons_Add( new CNcBackForwardNavigationBtn(this,true) );
  209. };
  210. virtual CRect & NcButtons_CalcGripperTextLocation(
  211. CRect & rcPreCalcText
  212. )
  213. {
  214. INT nCountOfNcButtons = NcButtons_GetCount();
  215. if( nCountOfNcButtons == 0 )
  216. return CExtControlBar::NcButtons_CalcGripperTextLocation(rcPreCalcText);
  217. ASSERT( nCountOfNcButtons == 3 );
  218. if( (g_ResourceManager->OnQueryLangLayout()&LAYOUT_RTL) != 0 )
  219. {
  220. CExtBarNcAreaButton * pBtnExamine = NcButtons_GetAt( 0 );
  221. CRect rc = *pBtnExamine;
  222. if( rcPreCalcText.left < rc.right )
  223. rcPreCalcText.left = rc.right;
  224. pBtnExamine = NcButtons_GetAt( 1 );
  225. rc = *pBtnExamine;
  226. if( rcPreCalcText.right > rc.left )
  227. rcPreCalcText.right = rc.left;
  228. }
  229. else
  230. {
  231. CExtBarNcAreaButton * pBtnExamine = NcButtons_GetAt( 0 );
  232. CRect rc = *pBtnExamine;
  233. if( rcPreCalcText.right > rc.left )
  234. rcPreCalcText.right = rc.left;
  235. pBtnExamine = NcButtons_GetAt( 1 );
  236. rc = *pBtnExamine;
  237. if( rcPreCalcText.left < rc.right )
  238. rcPreCalcText.left = rc.right;
  239. }
  240. return rcPreCalcText;
  241. }
  242. }; // class CMyResizableInFixedModeBar
  243. /////////////////////////////////////////////////////////////////////////////
  244. // CPanelEmpty
  245. class CPanelEmpty : public CExtPanelControlBar
  246. {
  247. public:
  248. CPanelEmpty();
  249. DECLARE_DYNAMIC(CPanelEmpty)
  250. // Attributes
  251. public:
  252. // Operations
  253. public:
  254. // Overrides
  255. // ClassWizard generated virtual function overrides
  256. //{{AFX_VIRTUAL(CPanelEmpty)
  257. //}}AFX_VIRTUAL
  258. // Implementation
  259. public:
  260. virtual ~CPanelEmpty();
  261. protected:
  262. virtual CSize OnQueryFixedBarNewSize(
  263. CExtPanelControlBar::e_fixed_bar_size_query_t eWhichSizeNeedToKnow
  264. ) const;
  265. // Generated message map functions
  266. protected:
  267. //{{AFX_MSG(CPanelEmpty)
  268. afx_msg void OnPaint();
  269. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  270. //}}AFX_MSG
  271. DECLARE_MESSAGE_MAP()
  272. }; // class CPanelEmpty
  273. /////////////////////////////////////////////////////////////////////////////
  274. // CPanelCustomDrawn
  275. class CPanelCustomDrawn : public CPanelEmpty
  276. {
  277. public:
  278. CPanelCustomDrawn();
  279. DECLARE_DYNAMIC(CPanelCustomDrawn)
  280. // Attributes
  281. public:
  282. // Operations
  283. public:
  284. // Overrides
  285. // ClassWizard generated virtual function overrides
  286. //{{AFX_VIRTUAL(CPanelCustomDrawn)
  287. //}}AFX_VIRTUAL
  288. // Implementation
  289. public:
  290. virtual ~CPanelCustomDrawn();
  291. // Generated message map functions
  292. protected:
  293. //{{AFX_MSG(CPanelCustomDrawn)
  294. afx_msg void OnPaint();
  295. //}}AFX_MSG
  296. DECLARE_MESSAGE_MAP()
  297. }; // class CPanelCustomDrawn
  298. /////////////////////////////////////////////////////////////////////////////
  299. // CMainFrame
  300. class CMainFrame : public CExtNCW < CFrameWnd >
  301. {
  302. public:
  303. class CColorStatic : public CStatic
  304. {
  305. public:
  306. COLORREF m_clrIn, m_clrOut;
  307. CColorStatic();
  308. LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
  309. }; // class CColorStatic
  310. HWND m_hWndSelectedToolButton;
  311. class CDynamicButton : public CExtButton
  312. {
  313. public:
  314. virtual void PostNcDestroy()
  315. {
  316. delete this;
  317. }
  318. LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
  319. {
  320. if( message == WM_SETFOCUS )
  321. {
  322. CFrameWnd * pFrame = GetParentFrame();
  323. ASSERT_VALID( pFrame );
  324. if( pFrame->IsKindOf(RUNTIME_CLASS(CMiniFrameWnd)) )
  325. {
  326. pFrame = pFrame->GetParentFrame();
  327. ASSERT_VALID( pFrame );
  328. }
  329. pFrame->SetFocus();
  330. return 0L;
  331. }
  332. return CExtButton::WindowProc(message,wParam,lParam);
  333. }
  334. virtual void _OnClick(
  335. bool bSelectAny,
  336. bool bSeparatedDropDownClicked
  337. );
  338. }; // class CDynamicButton
  339. class CDynamicPaletteButton : public CDynamicButton
  340. {
  341. public:
  342. COLORREF m_clr;
  343. CDynamicPaletteButton( COLORREF clr );
  344. virtual void _OnClick(
  345. bool bSelectAny,
  346. bool bSeparatedDropDownClicked
  347. );
  348. virtual void _RenderImpl( // non-buffered paint
  349. CDC & dc,
  350. bool bTransparent = false,
  351. bool bCombinedContent = false
  352. );
  353. LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
  354. }; // class CDynamicPaletteButton
  355. public:
  356. CMainFrame();
  357. DECLARE_DYNAMIC(CMainFrame)
  358. // Attributes
  359. public:
  360. private:
  361. // window placement persistence
  362. WINDOWPLACEMENT m_dataFrameWP;
  363. // Operations
  364. public:
  365. // Overrides
  366. // ClassWizard generated virtual function overrides
  367. //{{AFX_VIRTUAL(CMainFrame)
  368. public:
  369. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  370. virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
  371. virtual BOOL PreTranslateMessage(MSG* pMsg);
  372. virtual BOOL DestroyWindow();
  373. virtual void ActivateFrame(int nCmdShow = -1);
  374. //}}AFX_VIRTUAL
  375. // Implementation
  376. public:
  377. virtual ~CMainFrame();
  378. #ifdef _DEBUG
  379. virtual void AssertValid() const;
  380. virtual void Dump(CDumpContext& dc) const;
  381. #endif
  382. protected:  // control bar embedded members
  383. CExtStatusControlBar  m_wndStatusBar;
  384. CExtMenuControlBar    m_wndMenuBar;
  385. CExtToolControlBar    m_wndToolBar;
  386. CExtThemeSwitcherToolControlBar m_wndToolBarUiLook;
  387. CPanelEmpty m_wndPanelEmpty;
  388. CPanelCustomDrawn m_wndPanelCustomDrawn;
  389. CExtPanelControlBar
  390. m_wndPanelEdit, m_wndPanelDialog,
  391. m_wndPanelTools, m_wndPanelPalette;
  392. CEdit m_wndEdit;
  393. CExtResizableDialog
  394. m_dlgForPanelDialog, m_dlgForPanelTools,
  395. m_dlgForPanelPalette;
  396. CExtLabel m_wndToolsPanelLabel, m_wndDialogPanelLabel;
  397. CExtCheckBox m_wndDialogPanelCheck1, m_wndDialogPanelCheck2;
  398. CChildView    m_wndView;
  399. CColorStatic m_wndColorStatic;
  400. CMyResizableInFixedModeBar m_wndResizableBar1,m_wndResizableBar2;
  401. CDemoHtmlCtrl m_wndHtmlCtrl1, m_wndHtmlCtrl2;
  402. // Generated message map functions
  403. protected:
  404. //{{AFX_MSG(CMainFrame)
  405. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  406. afx_msg void OnSetFocus(CWnd *pOldWnd);
  407. //}}AFX_MSG
  408. afx_msg void OnClickedToolButton( UINT nID );
  409. afx_msg void OnClickedPaletteButtonL( UINT nID );
  410. afx_msg void OnClickedPaletteButtonR( UINT nID );
  411. DECLARE_MESSAGE_MAP()
  412. };
  413. /////////////////////////////////////////////////////////////////////////////
  414. //{{AFX_INSERT_LOCATION}}
  415. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  416. #endif // !defined(AFX_MAINFRM_H__8AD8EDA0_FE43_4657_B159_597A63DD8A98__INCLUDED_)