TaxExpertView.cpp
上传用户:szcysw
上传日期:2013-03-11
资源大小:6752k
文件大小:5k
源码类别:

界面编程

开发平台:

Visual C++

  1. // TaxExpertView.cpp : implementation of the CTaxExpertView class
  2. //
  3. #include "stdafx.h"
  4. #include "TaxExpert.h"
  5. #include "top1.h"
  6. #include "TaxExpertDoc.h"
  7. #include "TaxExpertView.h"
  8. #include "ContainerView.h"
  9. #include "FolderListView.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. /////////////////////////////////////////////////////////////////////////////
  16. // CTaxExpertView
  17. IMPLEMENT_DYNCREATE(CTaxExpertView, CView)
  18. BEGIN_MESSAGE_MAP(CTaxExpertView, CView)
  19. //{{AFX_MSG_MAP(CTaxExpertView)
  20. ON_WM_CREATE()
  21. ON_WM_SIZE()
  22. //}}AFX_MSG_MAP
  23. // Standard printing commands
  24. ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
  25. ON_MESSAGE(FM_CLOSEFOLDERLISTVIEW, OnCloseFolderListView)
  26. ON_MESSAGE(CM_ONPUSHPINBUTTON, OnPushPinButton)
  27. ON_MESSAGE(CM_ONPUSHPINCANCEL, OnPushPinCancel)
  28. END_MESSAGE_MAP()
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CTaxExpertView construction/destruction
  31. CTaxExpertView::CTaxExpertView()
  32. {
  33. current_sel_main=_T("");
  34. current_sel_sub=_T("");
  35. // define the caption font.
  36. NONCLIENTMETRICS ncm;
  37. memset(&ncm, 0, sizeof(NONCLIENTMETRICS));
  38. ncm.cbSize = sizeof(NONCLIENTMETRICS);
  39. VERIFY(::SystemParametersInfo(SPI_GETNONCLIENTMETRICS,
  40. sizeof(NONCLIENTMETRICS), &ncm, 0));
  41. ncm.lfMessageFont.lfWeight = 700;
  42. ncm.lfMessageFont.lfHeight = 20;
  43. strcpy(ncm.lfMessageFont.lfFaceName, "Arial");
  44. m_CaptionFont.CreateFontIndirect(&ncm.lfMessageFont);
  45. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  46. }
  47. CTaxExpertView::~CTaxExpertView()
  48. {
  49. }
  50. BOOL CTaxExpertView::PreCreateWindow(CREATESTRUCT& cs)
  51. {
  52. if( !CView::PreCreateWindow(cs) )
  53. return FALSE;
  54. cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
  55. cs.dwExStyle |=  WS_EX_STATICEDGE;
  56. return TRUE;
  57. }
  58. /////////////////////////////////////////////////////////////////////////////
  59. // CTaxExpertView drawing
  60. void CTaxExpertView::OnDraw(CDC* pDC)
  61. {
  62. CTaxExpertDoc* pDoc = GetDocument();
  63. ASSERT_VALID(pDoc);
  64. // TODO: add draw code for native data here
  65. }
  66. void CTaxExpertView::OnInitialUpdate()
  67. {
  68. CView::OnInitialUpdate();
  69. // TODO: This code navigates to a popular spot on the web.
  70. //  change the code to go where you'd like.
  71. }
  72. /////////////////////////////////////////////////////////////////////////////
  73. // CTaxExpertView printing
  74. /////////////////////////////////////////////////////////////////////////////
  75. // CTaxExpertView diagnostics
  76. #ifdef _DEBUG
  77. void CTaxExpertView::AssertValid() const
  78. {
  79. CView::AssertValid();
  80. }
  81. void CTaxExpertView::Dump(CDumpContext& dc) const
  82. {
  83. CView::Dump(dc);
  84. }
  85. CTaxExpertDoc* CTaxExpertView::GetDocument() // non-debug version is inline
  86. {
  87. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTaxExpertDoc)));
  88. return (CTaxExpertDoc*)m_pDocument;
  89. }
  90. #endif //_DEBUG
  91. /////////////////////////////////////////////////////////////////////////////
  92. // CTaxExpertView message handlers
  93. int CTaxExpertView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  94. {
  95. if (CView::OnCreate(lpCreateStruct) == -1)
  96. return -1;
  97. if (!m_Caption.Create(this, _T("Inbox")))
  98. {
  99. TRACE0(_T("Failed to caption window.n"));
  100. return -1;
  101. }
  102. //设置标题栏背景色
  103. m_Caption.SetCaptionColors( ::GetSysColor(COLOR_BTNFACE),
  104. ::GetSysColor(COLOR_BTNSHADOW), ::GetSysColor(COLOR_WINDOW));
  105. //设置标题属性
  106. m_Caption.ModifyCaptionStyle( 4, &m_CaptionFont, NULL, m_hIcon);
  107. // 对CTaxExpertView进行切分
  108. CCreateContext *pContext = (CCreateContext*)lpCreateStruct->lpCreateParams;
  109. // 将视图切分成两个窗口
  110. if (!m_wndSplitter.CreateStatic(this, 1, 2))
  111. {
  112. TRACE0("Failed to create splitter windown");
  113. return FALSE;
  114. }
  115. //第一列的窗口使用树形视图
  116. if (!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CFolderListView),
  117. CSize(175, 0), pContext))
  118. {
  119. m_wndSplitter.DestroyWindow();
  120. return -1;
  121. }
  122. // 对除树形树图的另一个窗口进行切分:两列
  123. if (!m_wndSplitter2.CreateStatic(&m_wndSplitter,
  124. 2, 1,
  125. WS_CHILD | WS_VISIBLE | WS_BORDER,
  126. m_wndSplitter.IdFromRowCol(0, 1)))
  127. {
  128. TRACE0("Failed to create nested splittern");
  129. return FALSE;
  130. }
  131. // 第二行窗口使用CTop:列表视图
  132. if (!m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CTop),
  133. CSize(0, 200), pContext))
  134. {
  135. m_wndSplitter2.DestroyWindow();
  136. return FALSE;
  137. }
  138. // 第二行窗口使用CContainerView:显示HTML文档
  139. if (!m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CContainerView),
  140. CSize(0, 300), pContext))
  141. {
  142. m_wndSplitter2.DestroyWindow();
  143. return FALSE;
  144. }
  145. return 0;
  146. }
  147. void CTaxExpertView::OnSize(UINT nType, int cx, int cy) 
  148. {
  149. CView::OnSize(nType, cx, cy);
  150. if( m_wndSplitter.GetSafeHwnd())
  151. {
  152. int nCX = ::GetSystemMetrics( SM_CXEDGE );
  153. int nCY = ::GetSystemMetrics( SM_CYEDGE );
  154. // move and grow view to clip border
  155. m_wndSplitter.MoveWindow(-nCX, 30, cx+(nCX*2), cy+(nCY*2)-34);
  156. }
  157. if( m_Caption.GetSafeHwnd()) {
  158. m_Caption.MoveWindow(0,0,cx,31);
  159. }
  160. }
  161. void CTaxExpertView::OnCloseFolderListView(UINT lParam, LONG wParam)
  162. {
  163. m_Caption.SetChildWindow( &CFolderListView::m_TreeCtrl, this );
  164. m_wndSplitter.HideColumn(0);
  165. }
  166. void CTaxExpertView::OnPushPinButton(UINT lParam, LONG wParam)
  167. {
  168. m_wndSplitter.ShowColumn();
  169. }
  170. void CTaxExpertView::OnPushPinCancel(UINT lParam, LONG wParam)
  171. {
  172. // TODO: Add your message handler code here and/or call default
  173. }
  174. CCJTreeCtrl* CTaxExpertView::GetFolderTreeCtrl()
  175. {
  176. return &CFolderListView::m_TreeCtrl;
  177. }