// ExcelTabViewView.cpp : implementation of the CExcelTabViewView class // // Generated by Codejock Toolkit Pro Application Wizard. // Contact information: // support@codejock.com // http://www.codejock.com // #include "stdafx.h" #include "Resource.h" #include "SheetListCtrl.h" #include "SheetEditCtrl.h" #include "SheetTreeCtrl.h" #include "SheetFormView.h" #include "SheetScrollView.h" #include "ExcelTabView.h" #include "ExcelTabViewDoc.h" #include "ExcelTabViewView.h" #include "MainFrm.h" #include "ExcelTabProperties.h" #ifdef _DEBUG # define new DEBUG_NEW #endif // CExcelTabViewView IMPLEMENT_DYNCREATE(CExcelTabViewView, CView) BEGIN_MESSAGE_MAP(CExcelTabViewView, CView) ON_COMMAND(ID_EDIT_PASTE, OnEmptyCommand) ON_COMMAND(ID_EDIT_CUT, OnEmptyCommand) ON_COMMAND(ID_EDIT_COPY, OnEmptyCommand) ON_COMMAND(ID_EDIT_SELECT_ALL, OnEmptyCommand) ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEmptyCommand) ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEmptyCommand) ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEmptyCommand) ON_UPDATE_COMMAND_UI(ID_EDIT_SELECT_ALL, OnUpdateEmptyCommand) ON_WM_CREATE() ON_WM_PAINT() ON_WM_SIZE() ON_WM_NCCALCSIZE() ON_WM_NCPAINT() ON_MESSAGE(WM_XTP_SETCONTROLTHEME, OnSetControlTheme) ON_COMMAND(ID_PROPERTIES, OnExceltabProperties) END_MESSAGE_MAP() // CExcelTabViewView construction/destruction CExcelTabViewView::CExcelTabViewView() : ParentView() , m_pExcelTabCtrl(NULL) , m_dwTabStyle(0) , m_bBottom(TRUE) , m_bHasArrows(TRUE) , m_bHasHomeEnd(FALSE) , m_bHScroll(TRUE) , m_bSquareTabs(TRUE) , m_pSheet7(NULL) , m_pSheet8(NULL) { // TODO: add construction code here m_dwTabStyle |= FTS_XTP_HASHOMEEND; m_dwTabStyle |= FTS_XTP_BOTTOM; m_dwTabStyle |= FTS_XTP_HASARROWS; m_dwTabStyle |= FTS_XTP_HSCROLL; m_dwTabStyle |= FTS_XTP_SQUARETABS; m_dwTabStyle |= FTS_XTP_TOOLTIPS; } CExcelTabViewView::~CExcelTabViewView() { // TODO: add cleanup code here if (::IsWindow(m_pSheet7->GetSafeHwnd())) m_pSheet7->DestroyWindow(); if (::IsWindow(m_pSheet8->GetSafeHwnd())) m_pSheet8->DestroyWindow(); SAFE_DELETE(m_pExcelTabCtrl); } BOOL CExcelTabViewView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs if (!ParentView::PreCreateWindow(cs)) return FALSE; cs.style |= WS_CLIPCHILDREN | WS_CLIPSIBLINGS; return TRUE; } void CExcelTabViewView::OnDraw(CDC* pDC) { UNREFERENCED_PARAMETER(pDC); CExcelTabViewDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: add draw code for native data here } int CExcelTabViewView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (ParentView::OnCreate(lpCreateStruct) == -1) { TRACE(_T("ERROR: Unable to create application view.\n")); return -1; } if (!CreateExcelTabCtrl()) { TRACE(_T("ERROR: Unable to create ExcelTabCtrl.\n")); return -1; } ModifyStyleEx(WS_EX_CLIENTEDGE, 0); return 0; } void CExcelTabViewView::OnPaint() { CPaintDC dc(this); // device context for painting CXTPClientRect rc(this); CXTPBufferDC memDC(dc, rc); memDC.FillSolidRect(rc, GetSysColor(COLOR_WINDOW)); } void CExcelTabViewView::OnSize(UINT nType, int cx, int cy) { ParentView::OnSize(nType, cx, cy); if (::IsWindow(m_pExcelTabCtrl->GetSafeHwnd())) { m_pExcelTabCtrl->SetWindowPos(NULL, 0, 0, cx, cy, SWP_FRAMECHANGED); } } BOOL CExcelTabViewView::CreateExcelTabCtrl() { int iSel = 0; CXTPEmptyRect rcCtrl; m_pExcelTabCtrl = new CXTPExcelTabCtrl(); if (!m_pExcelTabCtrl->Create(WS_CHILD | WS_VISIBLE | m_dwTabStyle, rcCtrl, this, IDC_EXCELTAB_CTRL)) { TRACE(_T("ERROR: Unable to create ExcelTabCtrl.\n")); return FALSE; } if (!CreateSheet1()) return FALSE; if (!CreateSheet2()) return FALSE; if (!CreateSheet3()) return FALSE; if (!CreateSheet4()) return FALSE; if (!CreateSheet5()) return FALSE; if (!CreateSheet6()) return FALSE; if (!CreateSheet7()) return FALSE; if (!CreateSheet8()) return FALSE; // Insert tabs into the flat tab control. m_pExcelTabCtrl->InsertItem(0, _T("Build"), &m_sheet1); m_pExcelTabCtrl->InsertItem(1, _T("Debug"), &m_sheet2); m_pExcelTabCtrl->InsertItem(2, _T("Find in Files 1"), &m_sheet3); m_pExcelTabCtrl->InsertItem(3, _T("Find in Files 2"), &m_sheet4); m_pExcelTabCtrl->InsertItem(4, _T("Results"), &m_sheet5); m_pExcelTabCtrl->InsertItem(5, _T("SQL Debugging"), &m_sheet6); m_pExcelTabCtrl->InsertItem(6, _T("Form View"), m_pSheet7); m_pExcelTabCtrl->InsertItem(7, _T("Scroll View"), m_pSheet8); // set custom colors for the first tab. m_pExcelTabCtrl->SetTabBackColor(0, RGB(226, 239, 217)); m_pExcelTabCtrl->SetTabTextColor(0, RGB(83, 129, 53)); m_pExcelTabCtrl->SetSelTabBackColor(0, RGB(226, 239, 217)); m_pExcelTabCtrl->SetSelTabTextColor(0, RGB(55, 86, 35)); m_pExcelTabCtrl->SetCurSel(iSel); return TRUE; } BOOL CExcelTabViewView::CreateSheet1() { DWORD dwStyle = WS_CHILD | LVS_REPORT | LVS_NOCOLUMNHEADER; if (!m_sheet1.Create(dwStyle, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET1)) { TRACE(_T("ERROR: Unable to create sheet1.\n")); return FALSE; } ListView_SetExtendedListViewStyleEx(m_sheet1.m_hWnd, LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT); m_sheet1.InsertColumn(0, _T("Column"), LVCFMT_LEFT, 512); m_sheet1.InsertItem(0, _T("--------------------Configuration: ExcelTabView - Win32 ") _T("Debug--------------------")); m_sheet1.InsertItem(1, _T("Compiling resources...")); m_sheet1.InsertItem(2, _T("Compiling...")); m_sheet1.InsertItem(3, _T("StdAfx.cpp")); m_sheet1.InsertItem(5, _T("Compiling...")); m_sheet1.InsertItem(6, _T("ExcelEditCtrl.cpp")); m_sheet1.InsertItem(7, _T("ExcelFormView.cpp")); m_sheet1.InsertItem(8, _T("ExcelListCtrl.cpp")); m_sheet1.InsertItem(9, _T("ExcelScrollView.cpp")); m_sheet1.InsertItem(10, _T("ExcelTab.cpp")); m_sheet1.InsertItem(11, _T("ExcelTabDoc.cpp")); m_sheet1.InsertItem(12, _T("ExcelTabProperties.cpp")); m_sheet1.InsertItem(13, _T("ExcelTabView.cpp")); m_sheet1.InsertItem(14, _T("ExcelTreeCtrl.cpp")); m_sheet1.InsertItem(15, _T("MainFrm.cpp")); m_sheet1.InsertItem(16, _T("Generating Code...")); m_sheet1.InsertItem(17, _T("Linking...")); m_sheet1.InsertItem(18, _T("")); m_sheet1.InsertItem(19, _T("ExcelTabView.exe - 0 error(s), 0 warning(s)")); return TRUE; } BOOL CExcelTabViewView::CreateSheet2() { if (!m_sheet2.Create(WS_CHILD | WS_TABSTOP | WS_CLIPCHILDREN | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET2)) { TRACE(_T("ERROR: Unable to create sheet2.\n")); return FALSE; } m_sheet2.Initialize(this); m_sheet2.SetWindowText( _T("Loaded 'C:\\WINNT\\System32\\ntdll.dll', no matching symbolic information found.\r\n") _T("Loaded symbols for 'C:\\WINNT\\system32\\MFC42D.DLL'\r\n") _T("Loaded symbols for 'C:\\WINNT\\system32\\MSVCRTD.DLL'\r\n") _T("Loaded 'C:\\WINNT\\system32\\KERNEL32.DLL', no matching symbolic information ") _T("found.\r\n") _T("Loaded 'C:\\WINNT\\system32\\GDI32.DLL', no matching symbolic information found.\r\n") _T("Loaded 'C:\\WINNT\\system32\\USER32.DLL', no matching symbolic information found.\r\n") _T("Loaded 'C:\\WINNT\\system32\\ADVAPI32.DLL', no matching symbolic information ") _T("found.\r\n") _T("Loaded 'C:\\WINNT\\system32\\rpcrt4.dll', no matching symbolic information found.\r\n") _T("Loaded 'C:\\WINNT\\system32\\SHELL32.DLL', no matching symbolic information found.\r\n") _T("Loaded 'C:\\WINNT\\system32\\shlwapi.dll', no matching symbolic information found.\r\n") _T("Loaded 'C:\\WINNT\\system32\\comctl32.dll', no matching symbolic information ") _T("found.\r\n") _T("Loaded symbols for 'C:\\WINNT\\system32\\MFCO42D.DLL'\r\n") _T("Loaded 'C:\\WINNT\\system32\\OLE32.DLL', no matching symbolic information found.\r\n") _T("Loaded 'C:\\WINNT\\system32\\OLEAUT32.DLL', no matching symbolic information ") _T("found.\r\n") _T("Loaded 'C:\\WINNT\\system32\\lpk.dll', no matching symbolic information found.\r\n") _T("Loaded 'C:\\WINNT\\system32\\usp10.dll', no matching symbolic information found.\r\n") _T("XTTOOLKIT_DLL.DLL Initializing!\r\n") _T("Loaded 'C:\\WINNT\\system32\\indicdll.dll', no matching symbolic information ") _T("found.\r\n") _T("Loaded 'C:\\WINNT\\system32\\imm32.dll', no matching symbolic information found.\r\n") _T("The program 'D:\\Controls\\Bin\\ExcelTabView.exe' has exited with code 0 (0x0).\r\n")); return TRUE; } BOOL CExcelTabViewView::CreateSheet3() { if (!m_sheet3.Create(WS_CHILD | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | WS_VSCROLL, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET3)) { TRACE(_T("ERROR: Unable to create sheet3.\n")); return FALSE; } HTREEITEM file; file = m_sheet3.InsertItem(_T("D:\\Controls\\Samples\\ExcelTabView\\EditCtrlForFlatTab.cpp")); m_sheet3.InsertItem(_T("Line 92: pSB->Create(WS_CHILD, CRect(0, 0, 0, 0), (CWnd ") _T("*)this, 0)"), 0, 0, file); file = m_sheet3.InsertItem(_T("D:\\Controls\\Samples\\ExcelTabView\\ExcelTabView.rc")); m_sheet3.InsertItem(_T("Line 190:STYLE WS_CHILD"), 0, 0, file); file = m_sheet3.InsertItem(_T("D:\\Controls\\Samples\\ExcelTabView\\ExcelTabView.cpp")); m_sheet3.InsertItem(_T("Line 92: pSB->Create(WS_CHILD, CRect(0, 0, 0, 0), (CWnd ") _T("*)this, 0)"), 0, 0, file); m_sheet3.InsertItem(_T("Line 265: if ") _T("(!m_pExcelTabView->Create(WS_CHILD|WS_VISIBLE|m_dwTabStyle,"), 0, 0, file); m_sheet3.InsertItem(_T("Line 293: if (!m_sheet1.Create(WS_CHILD | "), 0, 0, file); m_sheet3.InsertItem(_T("Line 303: if (!m_sheet2.Create( WS_CHILD | WS_TABSTOP | ") _T("WS_CLIPCHILDREN |"), 0, 0, file); m_sheet3.InsertItem(_T("Line 312: DWORD dwStyle = WS_CHILD | LBS_NOINTEGRALHEIGHT | ") _T("WS_TABSTOP | WS_VSCROLL;"), 0, 0, file); m_sheet3.InsertItem(_T("Line 316: WS_CHILD | TVS_HASBUTTONS | TVS_HASLINES | ") _T("TVS_LINESATROOT | WS_VSCROLL, "), 0, 0, file); m_sheet3.InsertItem(_T("Line 348: !((CWnd *)m_pSheet7)->Create(NULL, NULL, WS_CHILD, "), 0, 0, file); file = m_sheet3.InsertItem(_T("D:\\Controls\\Samples\\ExcelTabView\\SampleFormView.cpp")); m_sheet3.InsertItem( _T("Line 79: m_ScrollBarH.Create(WS_CHILD, CRect(0, 0, 0, 0), this, 0);"), 0, 0, file); return TRUE; } BOOL CExcelTabViewView::CreateSheet4() { DWORD dwStyle = WS_CHILD | LBS_NOINTEGRALHEIGHT | WS_TABSTOP | WS_VSCROLL | LBS_SORT | LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS; if (!m_sheet4.Create(dwStyle, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET4)) { TRACE(_T("ERROR: Unable to create sheet4.\n")); return FALSE; } m_sheet4.Initialize(); m_sheet4.AddString(_T("Find in Files 2 Tab Output...")); return TRUE; } BOOL CExcelTabViewView::CreateSheet5() { DWORD dwStyle = WS_CHILD | LBS_NOINTEGRALHEIGHT | WS_TABSTOP | WS_VSCROLL | LBS_SORT | LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS; if (!m_sheet5.Create(dwStyle, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET5)) { TRACE(_T("ERROR: Unable to create sheet5.\n")); return FALSE; } m_sheet5.Initialize(); m_sheet5.AddString(_T("Results Tab Output...")); return TRUE; } BOOL CExcelTabViewView::CreateSheet6() { DWORD dwStyle = WS_CHILD | LBS_NOINTEGRALHEIGHT | WS_TABSTOP | WS_VSCROLL | LBS_SORT | LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS; if (!m_sheet6.Create(dwStyle, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET6)) { TRACE(_T("ERROR: Unable to create sheet6.\n")); return FALSE; } m_sheet6.Initialize(); m_sheet6.AddString(_T("SQL Debugging Tab Output...")); return TRUE; } BOOL CExcelTabViewView::CreateSheet7() { // views must be created dynamically because they are destroyed during // window destruction CCreateContext cc; ::ZeroMemory(&cc, sizeof(cc)); m_pSheet7 = (CSheetFormView*)RUNTIME_CLASS(CSheetFormView)->CreateObject(); if (!m_pSheet7 || !((CWnd*)m_pSheet7) ->Create(NULL, NULL, WS_CHILD, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET7, &cc)) { TRACE(_T("ERROR: Unable to create sheet7.\n")); return FALSE; } return TRUE; } BOOL CExcelTabViewView::CreateSheet8() { // Create the Test Scroll View CCreateContext cc; ::ZeroMemory(&cc, sizeof(cc)); m_pSheet8 = (CSheetScrollView*)RUNTIME_CLASS(CSheetScrollView)->CreateObject(); if (!m_pSheet8 || !((CWnd*)m_pSheet8) ->Create(NULL, NULL, WS_CHILD | WS_VSCROLL | WS_HSCROLL, CXTPEmptyRect(), m_pExcelTabCtrl, IDC_SHEET8, &cc)) { TRACE(_T("ERROR: Unable to create sheet8.\n")); return FALSE; } return TRUE; } void CExcelTabViewView::OnEmptyCommand() { AfxMessageBox(_T("TODO: Add your command handler")); } void CExcelTabViewView::OnUpdateEmptyCommand(CCmdUI* pCmdUI) { _ASSERTE(NULL != pCmdUI); pCmdUI->Enable(TRUE); } #ifdef _DEBUG CExcelTabViewDoc* CExcelTabViewView::GetDocument() const { CExcelTabViewDoc* pDoc = DYNAMIC_DOWNCAST(CExcelTabViewDoc, m_pDocument); ASSERT_VALID(pDoc); return pDoc; } #endif //_DEBUG CMainFrame* CExcelTabViewView::GetMainFrame() const { CMainFrame* pMainFrame = DYNAMIC_DOWNCAST(CMainFrame, AfxGetMainWnd()); ASSERT_VALID(pMainFrame); return pMainFrame; } LRESULT CExcelTabViewView::OnSetControlTheme(WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); XTPControlTheme nTheme = (XTPControlTheme)wParam; COLORREF clrText = XTPIniColor(_T("Controls.Edit"), _T("Text"), ::GetSysColor(COLOR_BTNTEXT)); COLORREF clrBack = XTPIniColor(_T("Controls.Edit"), _T("Back"), ::GetSysColor(COLOR_BTNFACE)); m_sheet1.SetRowColors(clrText, clrBack); m_sheet2.SetTheme(nTheme); m_sheet3.SetTheme(nTheme); m_sheet4.SetTheme(nTheme); m_sheet5.SetTheme(nTheme); m_sheet6.SetTheme(nTheme); if (nTheme >= xtpControlThemeOffice2013) { m_bSquareTabs = TRUE; m_pExcelTabCtrl->SetTabHeight(XTP_DPI_Y(25)); } else { m_bSquareTabs = FALSE; m_pExcelTabCtrl->SetTabHeight(::GetSystemMetrics(SM_CYHSCROLL)); } return 0; } void CExcelTabViewView::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) { XTPPaintTheme nTheme = theApp.GetAppTheme(); if (nTheme > xtpControlThemeOffice2013) { lpncsp->rgrc[0].left += XTP_DPI_X(1); lpncsp->rgrc[0].top += XTP_DPI_Y(1); lpncsp->rgrc[0].right -= XTP_DPI_X(1); lpncsp->rgrc[0].bottom -= XTP_DPI_Y(1); } CView::OnNcCalcSize(bCalcValidRects, lpncsp); } void CExcelTabViewView::OnNcPaint() { XTPPaintTheme nTheme = theApp.GetAppTheme(); if (nTheme > xtpControlThemeOffice2013) { CWindowDC dc(this); CRect rc; GetWindowRect(&rc); rc.OffsetRect(-rc.TopLeft()); int cx = rc.Width(); int cy = rc.Height(); COLORREF crBorder = XTPIniColor(_T("TabClient"), _T("Border"), GetXtremeColor(COLOR_3DSHADOW)); dc.Draw3dRect(0, 0, cx, cy, crBorder, crBorder); } else { CView::OnNcPaint(); } } void CExcelTabViewView::OnExceltabProperties() { CExcelTabProperties dlg(m_bBottom, m_bHasArrows, m_bHasHomeEnd, m_bHScroll, m_bSquareTabs, this); dlg.DoModal(); } void CExcelTabViewView::UpdateExcelTabCtrl() { UpdateExcelTabCtrlStyle(); m_pExcelTabCtrl->SetTabStyle(m_dwTabStyle); } void CExcelTabViewView::UpdateExcelTabCtrlStyle() { DWORD dwNewStyle = 0; if (m_bHasHomeEnd) { dwNewStyle |= FTS_XTP_HASHOMEEND; m_bHasArrows = TRUE; } if (m_bBottom) dwNewStyle |= FTS_XTP_BOTTOM; if (m_bHasArrows) dwNewStyle |= FTS_XTP_HASARROWS; if (m_bHScroll) dwNewStyle |= FTS_XTP_HSCROLL; if (m_bSquareTabs) dwNewStyle |= FTS_XTP_SQUARETABS; dwNewStyle |= FTS_XTP_TOOLTIPS; if (dwNewStyle != m_dwTabStyle) { m_dwTabStyle = dwNewStyle; } }