// ConViewView.cpp : implementation of the CConViewView class // #include "stdafx.h" #include "MSVC5conview.h" #include "MSVC5ConViewDoc.h" #include "MSVC5ConViewView.h" #include "ConPropDlg.h" #include "CellPropeDlg.h" #include "ActionPropDlg.h" #include "AlphaPropDlg.h" #include "ScalePropDlg.h" #include "OffsetPropDlg.h" #include "StackPropDlg.h" #include "WinLevelPrpoDlg.h" #include "MagPropDlg.h" #include "InsertCellDlg.h" #include "RemoveCellDlg.h" #include "FreezeCellDlg.h" #include "leadrastercontainercell.h" #include "RepositionCellDlg.h" #include "StatisticsDlg.h" #include #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CConViewView IMPLEMENT_DYNCREATE(CConViewView, CFormView) BEGIN_MESSAGE_MAP(CConViewView, CFormView) //{{AFX_MSG_MAP(CConViewView) ON_WM_SIZE() ON_WM_ERASEBKGND( ) ON_COMMAND(IDM_INSERT_CELL, OnInsertCell) ON_COMMAND(ID_PROPERTIES_CONTAINERPROPERTIES, OnPropertiesContainerproperties) ON_UPDATE_COMMAND_UI(ID_PROPERTIES_CELLPROPERTIES, OnUpdatePropertiesCellproperties) ON_COMMAND(ID_PROPERTIES_CELLPROPERTIES, OnPropertiesCellproperties) ON_COMMAND(IDM_ALPHA_SET, OnAlphaSet) ON_COMMAND(IDM_MAG_SET, OnMagSet) ON_COMMAND(IDM_OFFSET_SET, OnOffsetSet) ON_COMMAND(IDM_RESIZE_SET, OnResizeSet) ON_COMMAND(IDM_STACK_SET, OnStackSet) ON_COMMAND(IDM_WINDOWLEVEL_SET, OnWindowlevelSet) ON_COMMAND(IDM_ALPHA_CUSTOM, OnAlphaCustom) ON_COMMAND(IDM_RSZ_CUSTOM, OnRszCustom) ON_COMMAND(IDM_OFFSET_CUSTOM, OnOffsetCustom) ON_COMMAND(IDM_STACK_CUSTOM, OnStackCustom) ON_COMMAND(IDM_WINDOWLEVEL_CUSTOM, OnWindowlevelCustom) ON_COMMAND(IDM_MAG_CUSTOM, OnMagCustom) ON_COMMAND(IDM_EDIT_FREEZECELL, OnEditFreezecell) ON_COMMAND(ID_EDIT_TOGGLEFREEZE, OnEditTogglefreeze) ON_COMMAND(ID_EDIT_SELECTALL, OnEditSelectall) ON_COMMAND(ID_EDIT_SELECTINV, OnEditSelectinv) ON_COMMAND(ID_EDIT_DESELECTALL, OnEditDeselectall) ON_COMMAND(ID_EDIT_SETCELLPOS, OnEditSetcellpos) ON_COMMAND(ID_EDIT_REMOVE, OnEditRemove) ON_COMMAND(ID_STATISTICS_STATISTICS, OnStatisticsStatistics) ON_UPDATE_COMMAND_UI(IDM_EDIT_FREEZECELL, OnUpdateEditFreezecell) ON_UPDATE_COMMAND_UI(ID_EDIT_TOGGLEFREEZE, OnUpdateEditTogglefreeze) ON_UPDATE_COMMAND_UI(ID_EDIT_SELECTALL, OnUpdateEditSelectall) ON_UPDATE_COMMAND_UI(ID_EDIT_SELECTINV, OnUpdateEditSelectinv) ON_UPDATE_COMMAND_UI(ID_EDIT_DESELECTALL, OnUpdateEditDeselectall) ON_UPDATE_COMMAND_UI(ID_EDIT_SETCELLPOS, OnUpdateEditSetcellpos) ON_UPDATE_COMMAND_UI(ID_EDIT_REMOVESELECTED, OnUpdateEditRemoveselected) ON_UPDATE_COMMAND_UI(ID_EDIT_REMOVE, OnUpdateEditRemove) ON_COMMAND(ID_EDIT_REMOVESELECTED, OnEditRemoveselected) //ON_WM_KEYUP() //ON_WM_KEYDOWN() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CConViewView construction/destruction BOOL CConViewView::PreTranslateMessage(MSG* pMsg) { BOOL b = TRUE;; if(pMsg->message == WM_KEYDOWN ) { CFormView::OnKeyDown(pMsg->wParam, pMsg->lParam, b); return S_OK; } else if(pMsg->message == WM_KEYUP ) { CFormView::OnKeyUp(pMsg->wParam, pMsg->lParam, b); return S_OK; } else if(pMsg->message == WM_CHAR) { CFormView::OnChar(pMsg->wParam, pMsg->lParam, b); return S_OK; } return CFormView::PreTranslateMessage(pMsg); } CConViewView::CConViewView() : CFormView(CConViewView::IDD) { m_Index = 0; m_pTmpRaster = NULL; ZeroMemory(m_CurrentActionButton, sizeof(UINT) * 7); ZeroMemory(m_CurrentActionFlags, sizeof(UINT) * 7); HRESULT hr = CoCreateInstance(CLSID_LEADRaster, NULL, CLSCTX_ALL, IID_ILEADRaster, (void**)&m_pTmpRaster); if (FAILED(hr)) { AfxMessageBox(_TEXT("Can't instantiate the Raster IO Object...")); return ; } /* UNLOCKSUPPORT(*m_pTmpRaster); */ //{{AFX_DATA_INIT(CConViewView) //}}AFX_DATA_INIT // TODO: add construction code here } CConViewView::~CConViewView() { if(m_pTmpRaster) { m_pTmpRaster->Release(); } } void CConViewView::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(CConViewView) DDX_Control(pDX, IDC_LEADRASTERCONTAINERVIEWER1, m_ConView); //}}AFX_DATA_MAP } BOOL CConViewView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CFormView::PreCreateWindow(cs); } void CConViewView::OnInitialUpdate() { CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); SetScrollSizes(MM_TEXT,CSize(1,1)); } ///////////////////////////////////////////////////////////////////////////// // CConViewView printing BOOL CConViewView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CConViewView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add extra initialization before printing } void CConViewView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } void CConViewView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/) { // TODO: add customized printing code here } ///////////////////////////////////////////////////////////////////////////// // CConViewView diagnostics #ifdef _DEBUG void CConViewView::AssertValid() const { CFormView::AssertValid(); } void CConViewView::Dump(CDumpContext& dc) const { CFormView::Dump(dc); } CConViewDoc* CConViewView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CConViewDoc))); return (CConViewDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CConViewView message handlers void CConViewView::OnSize(UINT nType, int cx, int cy) { CFormView::OnSize(nType, cx, cy); if( IsWindow(m_ConView.m_hWnd) ) { m_ConView.MoveWindow(0, 0, cx, cy); } // TODO: Add your message handler code here } BOOL CConViewView::OnEraseBkgnd( CDC* pDC ) { return FALSE; } INT CConViewView::CreateNewCell(TCHAR FAR * lpszPathName, UINT * uRetIndex) { CConViewApp * pTheApp = (CConViewApp *)AfxGetApp(); int nRet = pTheApp->m_pRasterIO->GetFileInfo(m_pTmpRaster, (TCHAR *)lpszPathName, 0, 0);//long uFlags if (nRet != 0) return FALSE; pTheApp->m_pRasterIO->PutEnableMethodErrors (VARIANT_FALSE); nRet = pTheApp->m_pRasterIO->Load(m_pTmpRaster,lpszPathName,0, pTheApp->m_nPageNum,-1); if (nRet != 0) return FALSE; INT nIndex = m_ConView.InsertCell(m_Index, 0); if(nIndex < 0) return FALSE; nRet = m_ConView.Cell(nIndex).InsertBitmapList(m_pTmpRaster, TRUE, 0); if (nRet != 0) return FALSE; *uRetIndex = nIndex; return TRUE; } int CConViewView::LoadCellFromFile(LPTSTR lpszPathName) { CConViewApp * pTheApp = (CConViewApp *)AfxGetApp(); int nRet = pTheApp->m_pRasterIO->GetFileInfo(m_pTmpRaster, (TCHAR *)lpszPathName, 0, 0);//long uFlags if (nRet != 0) return FALSE; pTheApp->m_pRasterIO->PutEnableMethodErrors (VARIANT_TRUE); nRet = pTheApp->m_pRasterIO->Load(m_pTmpRaster,lpszPathName,0, pTheApp->m_nPageNum,-1); if (nRet != 0) return FALSE; INT nIndex = m_ConView.InsertCell(m_Index, 0); if(nIndex < 0) return FALSE; m_ConView.SetEnableMethodErrors(TRUE); m_ConView.Cell(nIndex).InsertBitmapList(m_pTmpRaster, TRUE, 0); m_ConView.Cell(nIndex).SetIsFit(TRUE); m_ConView.Cell(nIndex).AddTag( 0, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("Overlay Text 1"), 0); m_ConView.Cell(nIndex).AddTag( 1, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("Overlay Text 2"), 0); m_ConView.Cell(nIndex).AddTag( 2, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("Overlay Text 3"), 0); m_ConView.Cell(nIndex).AddTag( 3, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("Overlay Text 4"), 0); m_ConView.Cell(nIndex).AddTag( 4, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("Overlay Text 5"), 0); m_ConView.Cell(nIndex).AddTag( 5, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("Overlay Text 6"), 0); m_ConView.Cell(nIndex).AddTag( 6, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("Overlay Text 7"), 0); m_ConView.Cell(nIndex).AddTag( 1, CONVIEW_CELLALIGN_LEFTCENTER, CONVIEW_CELLTAG_USERDATA, TEXT("Overlay Text 8"), 0); m_ConView.Cell(nIndex).AddTag( 1, CONVIEW_CELLALIGN_BOTTOMLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("Overlay Text 9"), 0); m_ConView.Cell(nIndex).AddTag( 0, CONVIEW_CELLALIGN_TOPCENTER , CONVIEW_CELLTAG_USERDATA, TEXT("Overlay Text 10"), 0); m_ConView.Cell(nIndex).AddTag( 0, CONVIEW_CELLALIGN_BOTTOMCENTER, CONVIEW_CELLTAG_USERDATA, TEXT("Overlay Text 12"), 0); m_ConView.Cell(nIndex).AddTag( 0, CONVIEW_CELLALIGN_TOPRIGHT , CONVIEW_CELLTAG_USERDATA, TEXT("Overlay Text 11"), 0); m_ConView.Cell(nIndex).AddTag( 0, CONVIEW_CELLALIGN_RIGHTCENTER , CONVIEW_CELLTAG_USERDATA, TEXT("R"), 0); m_ConView.Cell(nIndex).AddTag( 0, CONVIEW_CELLALIGN_BOTTOMRIGHT , CONVIEW_CELLTAG_OWNERDRAW, NULL, 0); m_ConView.Cell(nIndex).AddTag( 7, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_SCALE, NULL, 0); if(m_pTmpRaster->GetIsGrayscale()) m_ConView.Cell(nIndex).AddTag( 0, CONVIEW_CELLALIGN_BOTTOMLEFT, CONVIEW_CELLTAG_WLCENTERWIDTH, NULL, 0); m_ConView.Cell(nIndex).AddTag( 8, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_FRAME, NULL, 0); m_ConView.Cell(nIndex).AddTag( 3, CONVIEW_CELLALIGN_BOTTOMLEFT, CONVIEW_CELLTAG_FIELDOFVIEW, NULL, 0); return TRUE; } void CConViewView::InsertCellFromFile() { CConViewApp * pTheApp = (CConViewApp *)AfxGetApp(); pTheApp->m_pRasterDlgFile->PutEnableMethodErrors(FALSE); pTheApp->m_pRasterDlgFile->PutFilter(""); pTheApp->m_pRasterDlgFile->PutFileDlgFlags(OPEN_ALLOWMULTI); pTheApp->m_pRasterDlgFile->PutDialogTitle("Open File"); pTheApp->m_pRasterDlgFile->PutUIFlags( OPEN_SHOW_PROGRESSIVE | OPEN_SHOW_MULTIPAGE | OPEN_SHOW_LOADROTATED | OPEN_SHOW_LOADCOMPRESSED | OPEN_SHOW_FILEINFO | OPEN_SHOW_PREVIEW | OPEN_SHOW_DELPAGE | OPEN_SHOW_LOADOPTIONS | OPEN_SHOW_RASTEROPTIONS | OPEN_SHOW_PDFOPTIONS | OPEN_SHOW_VECTOROPTIONS | OPEN_VIEWTOTALPAGES | OPEN_ENABLESIZING | OPEN_NOFILEMUSTEXIST | OPEN_NOPATHMUSTEXIST | OPEN_USEFILESTAMP); pTheApp->m_pRasterDlgFile->ShowOpenDlg((long)pTheApp->m_pMainWnd->m_hWnd); } void CConViewView::OnInsertCell() { CInsertCellDlg InsertCellDlg; InsertCellDlg.m_pView = this; if(InsertCellDlg.DoModal() == IDOK) InsertCellFromFile(); } void CConViewView::OnPropertiesContainerproperties() { CConPropDlg ConPropDlg; ConPropDlg.m_pView = this; ConPropDlg.DoModal(); } void CConViewView::OnUpdatePropertiesCellproperties(CCmdUI* pCmdUI) { pCmdUI->Enable(m_ConView.GetCellCount()); } void CConViewView::OnPropertiesCellproperties() { CCellPropeDlg CellPropDlg; CellPropDlg.m_pView = this; CellPropDlg.DoModal(); } void CConViewView::OnAlphaSet() { CActionPropDlg ActionPropDlg; ActionPropDlg.m_pView = this; ActionPropDlg.m_uAction = ALPHA_ACTION; ActionPropDlg.m_Text = TEXT("Set Alpha Action"); ActionPropDlg.DoModal(); } void CConViewView::OnMagSet() { CActionPropDlg ActionPropDlg; ActionPropDlg.m_pView = this; ActionPropDlg.m_uAction = MAGNIFYGLASS_ACTION; ActionPropDlg.m_Text = TEXT("Set Magnify Glass Action"); ActionPropDlg.DoModal(); } void CConViewView::OnOffsetSet() { CActionPropDlg ActionPropDlg; ActionPropDlg.m_pView = this; ActionPropDlg.m_uAction = OFFSET_ACTION; ActionPropDlg.m_Text = TEXT("Set Offset Action"); ActionPropDlg.DoModal(); } void CConViewView::OnResizeSet() { CActionPropDlg ActionPropDlg; ActionPropDlg.m_pView = this; ActionPropDlg.m_uAction = SCALE_ACTION; ActionPropDlg.m_Text = TEXT("Set Scale Action"); ActionPropDlg.DoModal(); } void CConViewView::OnStackSet() { CActionPropDlg ActionPropDlg; ActionPropDlg.m_pView = this; ActionPropDlg.m_uAction = STACK_ACTION; ActionPropDlg.m_Text = TEXT("Set Stack Action"); ActionPropDlg.DoModal(); } void CConViewView::OnWindowlevelSet() { CActionPropDlg ActionPropDlg; ActionPropDlg.m_pView = this; ActionPropDlg.m_uAction = WINDOWLEVEL_ACTION; ActionPropDlg.m_Text = TEXT("Set Window Level Action"); ActionPropDlg.DoModal(); } void CConViewView::OnAlphaCustom() { CAlphaPropDlg AlphaPropDlg; AlphaPropDlg.m_pView = this; AlphaPropDlg.DoModal(); } void CConViewView::OnRszCustom() { CScalePropDlg ScalePropDlg; ScalePropDlg.m_pView = this; ScalePropDlg.DoModal(); } void CConViewView::OnOffsetCustom() { COffsetPropDlg OffsetPropDlg; OffsetPropDlg.m_pView = this; OffsetPropDlg.DoModal(); } void CConViewView::OnStackCustom() { CStackPropDlg StackPropDlg; StackPropDlg.m_pView = this; StackPropDlg.DoModal(); } void CConViewView::OnWindowlevelCustom() { CWinLevelPrpoDlg WinLevelPrpoDlg; WinLevelPrpoDlg.m_pView = this; WinLevelPrpoDlg.DoModal(); } void CConViewView::OnMagCustom() { CMagPropDlg MagPropDlg; MagPropDlg.m_pView = this; MagPropDlg.DoModal(); } void CConViewView::OnEditFreezecell() { CFreezeCellDlg FreezeCellDlg; FreezeCellDlg.m_pView = this; FreezeCellDlg.DoModal(); } void CConViewView::OnEditTogglefreeze() { INT nCount = m_ConView.GetCellCount(); for (INT nI = 0; nI < nCount; nI++) { if (m_ConView.Cell(nI).GetSelect()) { m_ConView.Cell(nI).SetFreeze(!(m_ConView.Cell(nI).GetFreeze())); } } } void CConViewView::OnEditSelectall() { m_ConView.Cell(-1).SetSelect(TRUE); } void CConViewView::OnEditSelectinv() { INT nCount = m_ConView.GetCellCount(); for (INT nI = 0; nI < nCount; nI++) { m_ConView.Cell(nI).SetSelect(!(m_ConView.Cell(nI).GetSelect())); } } void CConViewView::OnEditDeselectall() { m_ConView.Cell(-1).SetSelect(FALSE); } void CConViewView::OnEditSetcellpos() { CRepositionCellDlg RepositionCellDlg; RepositionCellDlg.m_pView = this; RepositionCellDlg.DoModal(); } void CConViewView::OnEditRemove() { CRemoveCellDlg RemoveCellDlg; RemoveCellDlg.m_pView = this; if(RemoveCellDlg.DoModal() == IDOK) m_ConView.RemoveCell(m_Index, TRUE, 0); } void CConViewView::OnStatisticsStatistics() { CStatisticsDlg StatisticsDlg; StatisticsDlg.m_pView = this; StatisticsDlg.DoModal(); } void CConViewView::OnUpdateEditFreezecell(CCmdUI* pCmdUI) { pCmdUI->Enable(m_ConView.GetCellCount()); } void CConViewView::OnUpdateEditTogglefreeze(CCmdUI* pCmdUI) { CConViewApp * pTheApp = (CConViewApp *)AfxGetApp(); INT nIndex = pTheApp->SearchForFirstSelectedCell(); pCmdUI->Enable(m_ConView.GetCellCount() && (nIndex + 1)); } void CConViewView::OnUpdateEditSelectall(CCmdUI* pCmdUI) { pCmdUI->Enable(m_ConView.GetCellCount()); } void CConViewView::OnUpdateEditSelectinv(CCmdUI* pCmdUI) { pCmdUI->Enable(m_ConView.GetCellCount()); } void CConViewView::OnUpdateEditDeselectall(CCmdUI* pCmdUI) { CConViewApp * pTheApp = (CConViewApp *)AfxGetApp(); INT nIndex = pTheApp->SearchForFirstSelectedCell(); pCmdUI->Enable(m_ConView.GetCellCount() && (nIndex + 1)); } void CConViewView::OnUpdateEditSetcellpos(CCmdUI* pCmdUI) { pCmdUI->Enable(max(0, m_ConView.GetCellCount() - 1)); } void CConViewView::OnUpdateEditRemoveselected(CCmdUI* pCmdUI) { CConViewApp * pTheApp = (CConViewApp *)AfxGetApp(); INT nIndex = pTheApp->SearchForFirstSelectedCell(); pCmdUI->Enable(m_ConView.GetCellCount() && (nIndex + 1)); } void CConViewView::OnUpdateEditRemove(CCmdUI* pCmdUI) { pCmdUI->Enable(m_ConView.GetCellCount()); } void CConViewView::OnEditRemoveselected() { INT nI = 0, nIndex = 0, nCount; nCount = m_ConView.GetCellCount(); for (nI = 0; nI < nCount; nI++) { if (m_ConView.Cell(nIndex).GetSelect()) m_ConView.RemoveCell(nIndex, TRUE, 0); else nIndex++; } } BEGIN_EVENTSINK_MAP(CConViewView, CFormView) //{{AFX_EVENTSINK_MAP(CConViewView) ON_EVENT(CConViewView, IDC_LEADRASTERCONTAINERVIEWER1, 10 /* CellTag */, OnCellTag, VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() void CConViewView::OnCellTag(long hDC, long lCellIndex, long lLeft, long lTop, long lWidth, long lHeight) { /* CDC dc; dc.Attach((HDC) hDC); if (lCellIndex == 0) { // draw an overlay with italic font static LOGFONT lf; CFont Font, OldFont; lf.lfHeight = lHeight; lf.lfItalic = TRUE; wsprintf(lf.lfFaceName, "Times new Roman\0"); Font.CreateFontIndirect(&lf); dc.SelectObject(Font) ; dc.SetTextAlign(TA_BOTTOM | TA_RIGHT); dc.SetTextColor(RGB(255, 255, 255)); dc.TextOut(lWidth + lLeft, lHeight + lTop, "Owner Text", 10); } dc.Detach();*/ }