ExcelTabView.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:14k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // ExcelTabView.cpp : implementation of the CExcelTabView class
  2. //
  3. #include "stdafx.h"
  4. #include "ExcelTab.h"
  5. #include "ExcelTabDoc.h"
  6. #include "ExcelTabView.h"
  7. #include "ExcelTabProperties.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CExcelTabView
  15. IMPLEMENT_DYNCREATE(CExcelTabView, CView)
  16. BEGIN_MESSAGE_MAP(CExcelTabView, CView)
  17. //{{AFX_MSG_MAP(CExcelTabView)
  18. ON_WM_CREATE()
  19. ON_WM_SIZE()
  20. ON_WM_ERASEBKGND()
  21. ON_WM_PAINT()
  22. ON_COMMAND(ID_EXCELTAB_PROPERTIES, OnExceltabProperties)
  23. //}}AFX_MSG_MAP
  24. // Standard printing commands
  25. ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
  26. ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
  27. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
  28. END_MESSAGE_MAP()
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CExcelTabView construction/destruction
  31. CExcelTabView::CExcelTabView()
  32. : m_dwTabStyle(0)
  33. , m_bBottom(TRUE)
  34. , m_bHasArrows(TRUE)
  35. , m_bHasHomeEnd(FALSE)
  36. , m_bHScroll(TRUE)
  37. , m_pSheet7(NULL)
  38. , m_pSheet8(NULL)
  39. , m_pExcelTabCtrl(NULL)
  40. {
  41. UpdateTabsStyle();
  42. }
  43. CExcelTabView::~CExcelTabView()
  44. {
  45. if (::IsWindow(m_pSheet7->GetSafeHwnd()))
  46. m_pSheet7->DestroyWindow();
  47. if (::IsWindow(m_pSheet8->GetSafeHwnd()))
  48. m_pSheet8->DestroyWindow();
  49. SAFE_DELETE(m_pExcelTabCtrl);
  50. }
  51. BOOL CExcelTabView::PreCreateWindow(CREATESTRUCT& cs)
  52. {
  53. if (!CView::PreCreateWindow(cs))
  54. return FALSE;
  55. // TODO: Modify the Window class or styles here by modifying
  56. //  the CREATESTRUCT cs
  57. cs.style |= WS_CLIPCHILDREN;
  58. return TRUE;
  59. }
  60. /////////////////////////////////////////////////////////////////////////////
  61. // CExcelTabView drawing
  62. void CExcelTabView::OnDraw(CDC* /*pDC*/)
  63. {
  64. }
  65. /////////////////////////////////////////////////////////////////////////////
  66. // CExcelTabView printing
  67. BOOL CExcelTabView::OnPreparePrinting(CPrintInfo* pInfo)
  68. {
  69. // default preparation
  70. return DoPreparePrinting(pInfo);
  71. }
  72. void CExcelTabView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  73. {
  74. // TODO: add extra initialization before printing
  75. }
  76. void CExcelTabView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  77. {
  78. // TODO: add cleanup after printing
  79. }
  80. /////////////////////////////////////////////////////////////////////////////
  81. // CExcelTabView diagnostics
  82. #ifdef _DEBUG
  83. void CExcelTabView::AssertValid() const
  84. {
  85. CView::AssertValid();
  86. }
  87. void CExcelTabView::Dump(CDumpContext& dc) const
  88. {
  89. CView::Dump(dc);
  90. }
  91. CExcelTabDoc* CExcelTabView::GetDocument() // non-debug version is inline
  92. {
  93. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CExcelTabDoc)));
  94. return (CExcelTabDoc*)m_pDocument;
  95. }
  96. #endif //_DEBUG
  97. /////////////////////////////////////////////////////////////////////////////
  98. // CExcelTabView message handlers
  99. void CExcelTabView::UpdateTabsStyle()
  100. {
  101. DWORD dwNewStyle = 0;
  102. if (m_bHasHomeEnd)
  103. {
  104. dwNewStyle |= FTS_XT_HASHOMEEND;
  105. m_bHasArrows = TRUE;
  106. }
  107. if (m_bBottom)
  108. dwNewStyle |= FTS_XT_BOTTOM;
  109. if (m_bHasArrows)
  110. dwNewStyle |= FTS_XT_HASARROWS;
  111. if (m_bHScroll)
  112. dwNewStyle |= FTS_XT_HSCROLL;
  113. dwNewStyle |= FTS_XT_TOOLTIPS;
  114. if (dwNewStyle != m_dwTabStyle)
  115. {
  116. m_dwTabStyle = dwNewStyle;
  117. }
  118. }
  119. int CExcelTabView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  120. {
  121. if (CView::OnCreate(lpCreateStruct) == -1)
  122. return -1;
  123. // Create  the flat tab control.
  124. if (!CreateExcelTab())
  125. return -1;
  126. return 0;
  127. }
  128. BOOL CExcelTabView::CreateExcelTab()
  129. {
  130. int iSel = 0;
  131. CXTPEmptyRect rTab;
  132. m_pExcelTabCtrl = new CXTExcelTabCtrl();
  133. // Create  the flat tab control.
  134. if (!m_pExcelTabCtrl->Create(WS_CHILD|WS_VISIBLE|m_dwTabStyle,
  135. rTab, this, IDC_EXCEL_TABCTRL))
  136. {
  137. TRACE0( "Failed to create flattab controln" );
  138. return FALSE;
  139. }
  140. if (!CreateSheet1()) return FALSE;
  141. if (!CreateSheet2()) return FALSE;
  142. if (!CreateSheet3()) return FALSE;
  143. if (!CreateSheet4()) return FALSE;
  144. if (!CreateSheet5()) return FALSE;
  145. if (!CreateSheet6()) return FALSE;
  146. if (!CreateSheet7()) return FALSE;
  147. if (!CreateSheet8()) return FALSE;
  148. // Insert tabs into the flat tab control.
  149. m_pExcelTabCtrl->InsertItem(0, _T("Build"),           &m_sheet1);
  150. m_pExcelTabCtrl->InsertItem(1, _T("Debug"),           &m_sheet2);
  151. m_pExcelTabCtrl->InsertItem(2, _T("Find in Files 1"), &m_sheet3);
  152. m_pExcelTabCtrl->InsertItem(3, _T("Find in Files 2"), &m_sheet4);
  153. m_pExcelTabCtrl->InsertItem(4, _T("Results"),         &m_sheet5);
  154. m_pExcelTabCtrl->InsertItem(5, _T("SQL Debugging"),   &m_sheet6);
  155. m_pExcelTabCtrl->InsertItem(6, _T("Form View"),       m_pSheet7);
  156. m_pExcelTabCtrl->InsertItem(7, _T("Scroll View"),     m_pSheet8);
  157. m_pExcelTabCtrl->SetCurSel(iSel);
  158. return TRUE;
  159. }
  160. BOOL CExcelTabView::CreateSheet1()
  161. {
  162. // Create the sheet1 list box.
  163. if (!m_sheet1.Create(WS_CHILD |
  164. LVS_REPORT | LVS_NOCOLUMNHEADER, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET1 ))
  165. {
  166. TRACE0( "Failed to create sheet1.n" );
  167. return FALSE;
  168. }
  169. ListView_SetExtendedListViewStyleEx(m_sheet1.m_hWnd,
  170. LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
  171. m_sheet1.SetBackColor(GetXtremeColor(COLOR_WINDOW));
  172. m_sheet1.InsertColumn(0, _T("Column"), LVCFMT_LEFT, 512);
  173. m_sheet1.InsertItem(0, _T("--------------------Configuration: ExcelTabView - Win32 Debug--------------------"));
  174. m_sheet1.InsertItem(1, _T("Compiling resources..."));
  175. m_sheet1.InsertItem(2, _T("Compiling..."));
  176. m_sheet1.InsertItem(3, _T("StdAfx.cpp"));
  177. m_sheet1.InsertItem(5, _T("Compiling..."));
  178.     m_sheet1.InsertItem(6, _T("ExcelEditCtrl.cpp"));
  179.     m_sheet1.InsertItem(7, _T("ExcelFormView.cpp"));
  180.     m_sheet1.InsertItem(8, _T("ExcelListCtrl.cpp"));
  181.     m_sheet1.InsertItem(9, _T("ExcelScrollView.cpp"));
  182.     m_sheet1.InsertItem(10, _T("ExcelTab.cpp"));
  183.     m_sheet1.InsertItem(11, _T("ExcelTabDoc.cpp"));
  184.     m_sheet1.InsertItem(12, _T("ExcelTabProperties.cpp"));
  185.     m_sheet1.InsertItem(13, _T("ExcelTabView.cpp"));
  186.     m_sheet1.InsertItem(14, _T("ExcelTreeCtrl.cpp"));
  187.     m_sheet1.InsertItem(15, _T("MainFrm.cpp"));
  188. m_sheet1.InsertItem(16, _T("Generating Code..."));
  189. m_sheet1.InsertItem(17, _T("Linking..."));
  190. m_sheet1.InsertItem(18, _T(""));
  191. m_sheet1.InsertItem(19, _T("ExcelTabView.exe - 0 error(s), 0 warning(s)"));
  192. CXTLogFont lf;
  193. XTAuxData().font.GetLogFont(&lf);
  194. STRCPY_S(lf.lfFaceName, LF_FACESIZE, _T("Courier New"));
  195. m_font.CreateFontIndirect(&lf);
  196. m_sheet1.SetFont(&m_font);
  197. return TRUE;
  198. }
  199. BOOL CExcelTabView::CreateSheet2()
  200. {
  201. // Create the sheet2 list box.
  202. if (!m_sheet2.Create( WS_CHILD | WS_TABSTOP | WS_CLIPCHILDREN |
  203. WS_HSCROLL | WS_VSCROLL | ES_MULTILINE, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET2 ))
  204. {
  205. TRACE0( "Failed to create sheet2.n" );
  206. return FALSE;
  207. }
  208. m_sheet2.SetFont(m_sheet1.GetFont());
  209. m_sheet2.SetBackColor(GetXtremeColor(COLOR_WINDOW));
  210. m_sheet2.SetWindowText(
  211. _T("Loaded 'C:\WINNT\System32\ntdll.dll', no matching symbolic information found.rn")
  212. _T("Loaded symbols for 'C:\WINNT\system32\MFC42D.DLL'rn")
  213. _T("Loaded symbols for 'C:\WINNT\system32\MSVCRTD.DLL'rn")
  214. _T("Loaded 'C:\WINNT\system32\KERNEL32.DLL', no matching symbolic information found.rn")
  215. _T("Loaded 'C:\WINNT\system32\GDI32.DLL', no matching symbolic information found.rn")
  216. _T("Loaded 'C:\WINNT\system32\USER32.DLL', no matching symbolic information found.rn")
  217. _T("Loaded 'C:\WINNT\system32\ADVAPI32.DLL', no matching symbolic information found.rn")
  218. _T("Loaded 'C:\WINNT\system32\rpcrt4.dll', no matching symbolic information found.rn")
  219. _T("Loaded 'C:\WINNT\system32\SHELL32.DLL', no matching symbolic information found.rn")
  220. _T("Loaded 'C:\WINNT\system32\shlwapi.dll', no matching symbolic information found.rn")
  221. _T("Loaded 'C:\WINNT\system32\comctl32.dll', no matching symbolic information found.rn")
  222. _T("Loaded symbols for 'C:\WINNT\system32\MFCO42D.DLL'rn")
  223. _T("Loaded 'C:\WINNT\system32\OLE32.DLL', no matching symbolic information found.rn")
  224. _T("Loaded 'C:\WINNT\system32\OLEAUT32.DLL', no matching symbolic information found.rn")
  225. _T("Loaded 'C:\WINNT\system32\lpk.dll', no matching symbolic information found.rn")
  226. _T("Loaded 'C:\WINNT\system32\usp10.dll', no matching symbolic information found.rn")
  227. _T("XTTOOLKIT_DLL.DLL Initializing!rn")
  228. _T("Loaded 'C:\WINNT\system32\indicdll.dll', no matching symbolic information found.rn")
  229. _T("Loaded 'C:\WINNT\system32\imm32.dll', no matching symbolic information found.rn")
  230. _T("The program 'D:\Controls\Bin\ExcelTabView.exe' has exited with code 0 (0x0).rn"));
  231. return TRUE;
  232. }
  233. BOOL CExcelTabView::CreateSheet3()
  234. {
  235. // Create the sheet3 list box.
  236. if (!m_sheet3.Create(
  237. WS_CHILD | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | WS_VSCROLL,
  238. CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET3 ))
  239. {
  240. TRACE0( "Failed to create sheet3.n" );
  241. return FALSE;
  242. }
  243. m_sheet3.SetBackColor(GetXtremeColor(COLOR_WINDOW));
  244. HTREEITEM file;
  245. file = m_sheet3.InsertItem(_T("D:\Controls\Samples\ExcelTabView\EditCtrlForFlatTab.cpp"));
  246. m_sheet3.InsertItem(_T("Line 92:            pSB->Create(WS_CHILD, CRect(0, 0, 0, 0), (CWnd *)this, 0)"), 0, 0, file);
  247. file = m_sheet3.InsertItem(_T("D:\Controls\Samples\ExcelTabView\ExcelTabView.rc"));
  248. m_sheet3.InsertItem(_T("Line 190:STYLE WS_CHILD"), 0, 0, file);
  249. file = m_sheet3.InsertItem(_T("D:\Controls\Samples\ExcelTabView\ExcelTabView.cpp"));
  250. m_sheet3.InsertItem(_T("Line 92:            pSB->Create(WS_CHILD, CRect(0, 0, 0, 0), (CWnd *)this, 0)"), 0, 0, file);
  251. m_sheet3.InsertItem(_T("Line 265:   if (!m_pExcelTabView->Create(WS_CHILD|WS_VISIBLE|m_dwTabStyle,"), 0, 0, file);
  252. m_sheet3.InsertItem(_T("Line 293:   if (!m_sheet1.Create(WS_CHILD |  "), 0, 0, file);
  253. m_sheet3.InsertItem(_T("Line 303:   if (!m_sheet2.Create( WS_CHILD | WS_TABSTOP | WS_CLIPCHILDREN |"), 0, 0, file);
  254. m_sheet3.InsertItem(_T("Line 312:   DWORD dwStyle = WS_CHILD | LBS_NOINTEGRALHEIGHT | WS_TABSTOP | WS_VSCROLL;"), 0, 0, file);
  255. m_sheet3.InsertItem(_T("Line 316:       WS_CHILD | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | WS_VSCROLL, "), 0, 0, file);
  256. m_sheet3.InsertItem(_T("Line 348:        !((CWnd *)m_pSheet7)->Create(NULL, NULL, WS_CHILD, "), 0, 0, file);
  257. file = m_sheet3.InsertItem(_T("D:\Controls\Samples\ExcelTabView\SampleFormView.cpp"));
  258. m_sheet3.InsertItem(_T("Line 79:    m_ScrollBarH.Create(WS_CHILD, CRect(0, 0, 0, 0), this, 0);"), 0, 0, file);
  259. return TRUE;
  260. }
  261. BOOL CExcelTabView::CreateSheet4()
  262. {
  263. // Define the default style for the output list boxes.
  264. DWORD dwStyle = WS_CHILD | LBS_NOINTEGRALHEIGHT | WS_TABSTOP | WS_VSCROLL;
  265. // Create the sheet4 list box.
  266. if (!m_sheet4.Create( dwStyle, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET4 ))
  267. {
  268. TRACE0( "Failed to create sheet4.n" );
  269. return FALSE;
  270. }
  271. m_sheet4.SetBackColor(GetXtremeColor(COLOR_WINDOW));
  272. m_sheet4.SetFont(&XTAuxData().font);
  273. m_sheet4.AddString(_T("Find in Files 2 Tab Output..."));
  274. return TRUE;
  275. }
  276. BOOL CExcelTabView::CreateSheet5()
  277. {
  278. // Define the default style for the output list boxes.
  279. DWORD dwStyle = WS_CHILD | LBS_NOINTEGRALHEIGHT | WS_TABSTOP | WS_VSCROLL;
  280. // Create the sheet5 list box.
  281. if (!m_sheet5.Create( dwStyle, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET5 ))
  282. {
  283. TRACE0( "Failed to create sheet5.n" );
  284. return FALSE;
  285. }
  286. m_sheet5.SetBackColor(GetXtremeColor(COLOR_WINDOW));
  287. m_sheet5.SetFont(&XTAuxData().font);
  288. m_sheet5.AddString(_T("Results Tab Output..."));
  289. return TRUE;
  290. }
  291. BOOL CExcelTabView::CreateSheet6()
  292. {
  293. // Define the default style for the output list boxes.
  294. DWORD dwStyle = WS_CHILD | LBS_NOINTEGRALHEIGHT | WS_TABSTOP | WS_VSCROLL;
  295. // Create the sheet6 list box.
  296. if (!m_sheet6.Create( dwStyle, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET6 ))
  297. {
  298. TRACE0( "Failed to create sheet6.n" );
  299. return FALSE;
  300. }
  301. m_sheet6.SetBackColor(GetXtremeColor(COLOR_WINDOW));
  302. m_sheet6.SetFont(&XTAuxData().font);
  303. m_sheet6.AddString(_T("SQL Debugging Tab Output..."));
  304. return TRUE;
  305. }
  306. BOOL CExcelTabView::CreateSheet7()
  307. {
  308. // views must be created dynamically because they are destroyed during
  309. // window destruction
  310. CCreateContext cc;
  311. ::ZeroMemory(&cc, sizeof(cc));
  312. m_pSheet7 = (CExcelFormView*)RUNTIME_CLASS(CExcelFormView)->CreateObject();
  313. if (!m_pSheet7  || !((CWnd *)m_pSheet7)->Create(
  314. NULL, NULL, WS_CHILD, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET7, &cc))
  315. {
  316. TRACE0( "Failed to create sheet7.n" );
  317. return FALSE;
  318. }
  319. return TRUE;
  320. }
  321. BOOL CExcelTabView::CreateSheet8()
  322. {
  323. // Create the Test Scroll View
  324. CCreateContext cc;
  325. ::ZeroMemory(&cc, sizeof(cc));
  326. m_pSheet8 = (CExcelScrollView*)RUNTIME_CLASS(CExcelScrollView)->CreateObject();
  327. if (!m_pSheet8  || !((CWnd *)m_pSheet8)->Create( NULL, NULL, WS_CHILD |
  328. WS_VSCROLL|WS_HSCROLL, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET8, &cc))
  329. {
  330. TRACE0( "Failed to create m_pSheet8.n" );
  331. return FALSE;
  332. }
  333. return TRUE;
  334. }
  335. void CExcelTabView::OnSize(UINT nType, int cx, int cy) 
  336. {
  337. CView::OnSize(nType, cx, cy);
  338. if (::IsWindow(m_pExcelTabCtrl->GetSafeHwnd()))
  339. {
  340. m_pExcelTabCtrl->SetWindowPos(NULL, 0,0, cx, cy, SWP_FRAMECHANGED);
  341. }
  342. }
  343. BOOL CExcelTabView::OnEraseBkgnd(CDC* pDC) 
  344. {
  345. UNREFERENCED_PARAMETER(pDC);
  346. return TRUE;
  347. }
  348. void CExcelTabView::OnPaint() 
  349. {
  350. CPaintDC dc(this); // device context for painting
  351. CXTPClientRect rClient(this);
  352. CXTMemDC memDC(&dc, rClient, GetXtremeColor(COLOR_WINDOW));
  353. }
  354. void CExcelTabView::OnExceltabProperties() 
  355. {
  356. CExcelTabProperties dlg(m_bBottom, m_bHasArrows, m_bHasHomeEnd, m_bHScroll, this);
  357. if (dlg.DoModal() == IDOK)
  358. {
  359. }
  360. }
  361. void CExcelTabView::UpdateExcelTab()
  362. {
  363. UpdateTabsStyle();
  364. m_pExcelTabCtrl->SetTabStyle(m_dwTabStyle);
  365. }