// annotVw.cpp : implementation of the CAnnotateView class // #include "stdafx.h" #include "annotate.h" #include "annotDoc.h" #include "annotVw.h" #include "rangeann.h" //#include "leaddlg.h" //#include "..\..\..\..\include\ltdlgocx.h" #include "linkdlg.h" #include "passdlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern CAnnotateApp theApp; #define ABS(x) ((x) < 0 ? -(x) : (x)) ///////////////////////////////////////////////////////////////////////////// // CAnnotateView IMPLEMENT_DYNCREATE(CAnnotateView, CFormView) BEGIN_MESSAGE_MAP(CAnnotateView, CFormView) //{{AFX_MSG_MAP(CAnnotateView) ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs) ON_COMMAND(ID_FILE_OPEN, OnFileOpen) ON_WM_SIZE() ON_UPDATE_COMMAND_UI(IDM_FITIMAGE, OnUpdateFitimage) ON_COMMAND(IDM_FITIMAGE, OnFitimage) ON_COMMAND(IDM_NORMAL, OnNormal) ON_UPDATE_COMMAND_UI(IDM_NORMAL, OnUpdateNormal) ON_COMMAND(IDM_ZOOM, OnZoom) ON_UPDATE_COMMAND_UI(IDM_ZOOM, OnUpdateZoom) ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy) ON_COMMAND(ID_EDIT_COPY, OnEditCopy) ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste) ON_COMMAND(ID_EDIT_PASTE, OnEditPaste) ON_UPDATE_COMMAND_UI(IDM_USERNONE, OnUpdateUsernone) ON_COMMAND(IDM_USERNONE, OnUsernone) ON_UPDATE_COMMAND_UI(IDM_USERRUN, OnUpdateUserrun) ON_COMMAND(IDM_USERRUN, OnUserrun) ON_COMMAND(IDM_USERDESIGN, OnUserdesign) ON_UPDATE_COMMAND_UI(IDM_USERDESIGN, OnUpdateUserdesign) ON_COMMAND(IDM_TOOLAUDIO, OnToolaudio) ON_UPDATE_COMMAND_UI(IDM_TOOLAUDIO, OnUpdateToolaudio) ON_COMMAND(IDM_TOOLBUTTON, OnToolbutton) ON_UPDATE_COMMAND_UI(IDM_TOOLBUTTON, OnUpdateToolbutton) ON_COMMAND(IDM_TOOLELLIPSE, OnToolellipse) ON_UPDATE_COMMAND_UI(IDM_TOOLELLIPSE, OnUpdateToolellipse) ON_COMMAND(IDM_TOOLFREEHAND, OnToolfreehand) ON_UPDATE_COMMAND_UI(IDM_TOOLFREEHAND, OnUpdateToolfreehand) ON_COMMAND(IDM_TOOLHILITE, OnToolhilite) ON_UPDATE_COMMAND_UI(IDM_TOOLHILITE, OnUpdateToolhilite) ON_COMMAND(IDM_TOOLHOTSPOT, OnToolhotspot) ON_UPDATE_COMMAND_UI(IDM_TOOLHOTSPOT, OnUpdateToolhotspot) ON_COMMAND(IDM_TOOLLINE, OnToolline) ON_UPDATE_COMMAND_UI(IDM_TOOLLINE, OnUpdateToolline) ON_COMMAND(IDM_TOOLNOTE, OnToolnote) ON_UPDATE_COMMAND_UI(IDM_TOOLNOTE, OnUpdateToolnote) ON_COMMAND(IDM_TOOLPOINTER, OnToolpointer) ON_UPDATE_COMMAND_UI(IDM_TOOLPOINTER, OnUpdateToolpointer) ON_COMMAND(IDM_TOOLPOLYGON, OnToolpolygon) ON_UPDATE_COMMAND_UI(IDM_TOOLPOLYGON, OnUpdateToolpolygon) ON_COMMAND(IDM_TOOLPOLYLINE, OnToolpolyline) ON_UPDATE_COMMAND_UI(IDM_TOOLPOLYLINE, OnUpdateToolpolyline) ON_COMMAND(IDM_TOOLRECT, OnToolrect) ON_UPDATE_COMMAND_UI(IDM_TOOLRECT, OnUpdateToolrect) ON_COMMAND(IDM_TOOLREDACT, OnToolredact) ON_UPDATE_COMMAND_UI(IDM_TOOLREDACT, OnUpdateToolredact) ON_COMMAND(IDM_TOOLSELECT, OnToolselect) ON_UPDATE_COMMAND_UI(IDM_TOOLSELECT, OnUpdateToolselect) ON_COMMAND(IDM_TOOLSTAMP, OnToolstamp) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMP, OnUpdateToolstamp) ON_COMMAND(IDM_TOOLTEXT, OnTooltext) ON_UPDATE_COMMAND_UI(IDM_TOOLTEXT, OnUpdateTooltext) ON_COMMAND(IDM_TOOLRULER, OnToolruler) ON_UPDATE_COMMAND_UI(IDM_TOOLRULER, OnUpdateToolruler) ON_COMMAND(ID_EDIT_LOCKANNOTATIONS, OnEditLockannotations) ON_UPDATE_COMMAND_UI(ID_EDIT_LOCKANNOTATIONS, OnUpdateEditLockannotations) ON_COMMAND(ID_EDIT_UNLOCKANNOTATIONS, OnEditUnlockannotations) ON_UPDATE_COMMAND_UI(ID_EDIT_UNLOCKANNOTATIONS, OnUpdateEditUnlockannotations) ON_COMMAND(ID_EDIT_SHOWLOCKEDOBJECTS, OnEditShowlockedobjects) ON_UPDATE_COMMAND_UI(ID_EDIT_SHOWLOCKEDOBJECTS, OnUpdateEditShowlockedobjects) ON_COMMAND(ID_EDIT_REALIZEREDACTOBJECTS, OnEditRealizeredactobjects) ON_UPDATE_COMMAND_UI(ID_EDIT_REALIZEREDACTOBJECTS, OnUpdateEditRealizeredactobjects) ON_COMMAND(ID_EDIT_RESTOREREDACTOBJECTS, OnEditRestoreredactobjects) ON_UPDATE_COMMAND_UI(ID_EDIT_RESTOREREDACTOBJECTS, OnUpdateEditRestoreredactobjects) ON_COMMAND(ID_EDIT_WANGCOMPATIBLETAGMODE, OnEditWangcompatibletagmode) ON_UPDATE_COMMAND_UI(ID_EDIT_WANGCOMPATIBLETAGMODE, OnUpdateEditWangcompatibletagmode) ON_COMMAND(IDM_TOOLCROSSPRODUCT, OnToolcrossproduct) ON_UPDATE_COMMAND_UI(IDM_TOOLCROSSPRODUCT, OnUpdateToolcrossproduct) ON_COMMAND(IDM_TOOLPOINT, OnToolpoint) ON_UPDATE_COMMAND_UI(IDM_TOOLPOINT, OnUpdateToolpoint) ON_COMMAND(IDM_TOOLPROTRACTOR, OnToolprotractor) ON_UPDATE_COMMAND_UI(IDM_TOOLPROTRACTOR, OnUpdateToolprotractor) ON_COMMAND(IDM_TOOLPUSHPIN, OnToolpushpin) ON_UPDATE_COMMAND_UI(IDM_TOOLPUSHPIN, OnUpdateToolpushpin) ON_COMMAND(IDM_TOOLFREEHANDHOTSPOT, OnToolfreehandhotspot) ON_UPDATE_COMMAND_UI(IDM_TOOLFREEHANDHOTSPOT, OnUpdateToolfreehandhotspot) ON_COMMAND(IDM_TOOLSTAMPAPPROVED, OnToolstampApproved) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPAPPROVED, OnUpdateToolstampApproved) ON_COMMAND(IDM_TOOLSTAMPASSIGNED, OnToolstampAssigned) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPASSIGNED, OnUpdateToolstampAssigned) ON_COMMAND(IDM_TOOLSTAMPCHECKED, OnToolstampChecked) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPCHECKED, OnUpdateToolstampChecked) ON_COMMAND(IDM_TOOLSTAMPCLATPRV, OnToolstampClatprv) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPCLATPRV, OnUpdateToolstampClatprv) ON_COMMAND(IDM_TOOLSTAMPCOPY, OnToolstampCopy) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPCOPY, OnUpdateToolstampCopy) ON_COMMAND(IDM_TOOLSTAMPDRAFT, OnToolstampDraft) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPDRAFT, OnUpdateToolstampDraft) ON_COMMAND(IDM_TOOLSTAMPEXTENDED, OnToolstampExtended) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPEXTENDED, OnUpdateToolstampExtended) ON_COMMAND(IDM_TOOLSTAMPFAX, OnToolstampFax) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPFAX, OnUpdateToolstampFax) ON_COMMAND(IDM_TOOLSTAMPFAXED, OnToolstampFaxed) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPFAXED, OnUpdateToolstampFaxed) ON_COMMAND(IDM_TOOLSTAMPIMPORTANT, OnToolstampImportant) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPIMPORTANT, OnUpdateToolstampImportant) ON_COMMAND(IDM_TOOLSTAMPINVOICE, OnToolstampInvoice) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPINVOICE, OnUpdateToolstampInvoice) ON_COMMAND(IDM_TOOLSTAMPNOTICE, OnToolstampNotice) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPNOTICE, OnUpdateToolstampNotice) ON_COMMAND(IDM_TOOLSTAMPOFFICIAL, OnToolstampOfficial) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPOFFICIAL, OnUpdateToolstampOfficial) ON_COMMAND(IDM_TOOLSTAMPONFILE, OnToolstampOnfile) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPONFILE, OnUpdateToolstampOnfile) ON_COMMAND(IDM_TOOLSTAMPPAID, OnToolstampPaid) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPPAID, OnUpdateToolstampPaid) ON_COMMAND(IDM_TOOLSTAMPPASSED, OnToolstampPassed) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPPASSED, OnUpdateToolstampPassed) ON_COMMAND(IDM_TOOLSTAMPPENDING, OnToolstampPending) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPPENDING, OnUpdateToolstampPending) ON_COMMAND(IDM_TOOLSTAMPPROCESSED, OnToolstampProcessed) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPPROCESSED, OnUpdateToolstampProcessed) ON_COMMAND(IDM_TOOLSTAMPRECEIVED, OnToolstampReceived) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPRECEIVED, OnUpdateToolstampReceived) ON_COMMAND(IDM_TOOLSTAMPREJECTED, OnToolstampRejected) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPREJECTED, OnUpdateToolstampRejected) ON_COMMAND(IDM_TOOLSTAMPRELEASE, OnToolstampRelease) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPRELEASE, OnUpdateToolstampRelease) ON_COMMAND(IDM_TOOLSTAMPSENT, OnToolstampSent) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPSENT, OnUpdateToolstampSent) ON_COMMAND(IDM_TOOLSTAMPSHIPPED, OnToolstampShipped) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPSHIPPED, OnUpdateToolstampShipped) ON_COMMAND(IDM_TOOLSTAMPTOPSECRET, OnToolstampTopsecret) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPTOPSECRET, OnUpdateToolstampTopsecret) ON_COMMAND(IDM_TOOLSTAMPURGENT, OnToolstampUrgent) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPURGENT, OnUpdateToolstampUrgent) ON_COMMAND(IDM_TOOLSTAMPVOID, OnToolstampVoid) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMPVOID, OnUpdateToolstampVoid) ON_COMMAND(IDM_TOOLUSER, OnTooluser) ON_UPDATE_COMMAND_UI(IDM_TOOLUSER, OnUpdateTooluser) ON_COMMAND(IDM_VIEW_ANNTOOLBAR, OnViewAnnToolbar) ON_UPDATE_COMMAND_UI(IDM_VIEW_ANNTOOLBAR, OnUpdateViewAnnToolbar) ON_MESSAGE(WM_DOREALIZE, OnDoRealize) ON_COMMAND(ID_EDIT_APPLYDECRYPTORS, OnEditApplydecryptors) ON_COMMAND(ID_EDIT_APPLYENCRYPTORS, OnEditApplyencryptors) //}}AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAnnotateView construction/destruction CAnnotateView::CAnnotateView() : CFormView(CAnnotateView::IDD) { //{{AFX_DATA_INIT(CAnnotateView) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_iTag = 0; m_bWangMode = FALSE; // add a user tool button the first time you create the annotation toolbar m_fAddUserButton = TRUE; // set the defaults for the objects used to implement the user-defined tool hEllipseObject = hRectObject = NULL; } CAnnotateView::~CAnnotateView() { } void CAnnotateView::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAnnotateView) DDX_Control(pDX, IDC_LEADCTRL1, m_Lead); DDX_Control(pDX, IDC_LEADCTRL2, m_Lead2); //}}AFX_DATA_MAP } BOOL CAnnotateView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CFormView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CAnnotateView printing BOOL CAnnotateView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation m_Lead.SetPaintSizeUseDPI(TRUE); return DoPreparePrinting(pInfo); } void CAnnotateView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing m_Lead.SetPaintSizeUseDPI(FALSE); } ///////////////////////////////////////////////////////////////////////////// // CAnnotateView diagnostics #ifdef _DEBUG void CAnnotateView::AssertValid() const { CFormView::AssertValid(); } void CAnnotateView::Dump(CDumpContext& dc) const { CFormView::Dump(dc); } CAnnotateDoc* CAnnotateView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAnnotateDoc))); return (CAnnotateDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CAnnotateView message handlers void CAnnotateView::GetAnnName(LPSTR szFilename, LPSTR szAnnName) { LPSTR lp; if( (lp = strrchr(szFilename,'.')) == NULL ) { strcpy(szAnnName,szFilename); strcat(szAnnName,".ann"); } else { memcpy(szAnnName,szFilename,lp-szFilename); strcpy(szAnnName+(lp-szFilename),".ann"); } } void CAnnotateView::OnFileOpen() { int nRet; char szAnnFile[256]; CString sFileName; OFSTRUCT of; theApp.m_pRasterFileDlg->PutEnableMethodErrors(FALSE); theApp.m_pRasterFileDlg->PutFilter(""); theApp.m_pRasterFileDlg->PutFileDlgFlags(0); theApp.m_pRasterFileDlg->PutDialogTitle("Open File"); theApp.m_pRasterFileDlg->PutUIFlags( OPEN_LOADBITMAP | OPEN_SHOW_MULTIPAGE | OPEN_SHOW_PREVIEW | OPEN_USEFILESTAMP | OPEN_SHOW_FILEINFO | OPEN_SHOW_LOADOPTIONS | OPEN_SHOW_LOADCOMPRESSED | OPEN_SHOW_LOADROTATED | OPEN_SHOW_DELPAGE | OPEN_SHOW_PDFOPTIONS | OPEN_SHOW_RASTEROPTIONS | OPEN_SHOW_VECTOROPTIONS | OPEN_VIEWTOTALPAGES | OPEN_ENABLESIZING ); nRet = theApp.m_pRasterFileDlg->ShowOpenDlg((long)this->m_hWnd); if(nRet == 0 && theApp.m_pRasterFileDlg->GetDialogStatus() == DLG_OK) { sFileName = theApp.m_pRasterFileDlg->GetFileName().copy(); nRet = m_Lead.Load((LPCTSTR)sFileName,0,(short)theApp.m_pRasterFileDlg->GetPageNumber(),1); if( nRet ) { theApp.DisplayLEADError(nRet); return; } RecalcSizes(); OnDoRealize((WPARAM)theApp.m_pMainWnd->m_hWnd, (LPARAM) FALSE); // don't generate exceptions if there is an error m_Lead.SetEnableMethodErrors(FALSE); //attempt to load annotations from the file, in case it is a TIFF //with Wang ann tag nRet = m_Lead.AnnLoad(theApp.m_pRasterFileDlg->GetFileName(), (short)theApp.m_pRasterFileDlg->GetPageNumber()); //if it fails, then look for a .ann file if (nRet != 0) { // get the name of the annotation file (same name, extension .ann) GetAnnName((char*)(LPCTSTR)sFileName,szAnnFile); if( OpenFile(szAnnFile,&of,OF_EXIST) != HFILE_ERROR ) m_Lead.AnnLoad(szAnnFile, (short)theApp.m_pRasterFileDlg->GetPageNumber()); m_Lead.AnnLoad(szAnnFile, 1); } // restore EnableMethodErrors m_Lead.SetEnableMethodErrors(TRUE); } else if(nRet == ERROR_PDF_BAD_INITIALIZATION_FILES) { if( IDYES == MessageBox (TEXT("LEADTOOLS PDF plugin is not found, do you want to download the plugin now?"), TEXT("Open File"),MB_ICONEXCLAMATION | MB_YESNO)) { ShellExecute(m_hWnd, TEXT("open"), TEXT("http://www.leadtools.com/ReleaseDownloads/v14/LEADTOOLSPDFRuntime.exe"), NULL, NULL, SW_SHOWNORMAL); } } else theApp.DisplayLEADError(nRet); return; } void CAnnotateView::OnFileSaveAs() { int nRet; char szAnnFile[256]; CString sFileName; int nMode=0; theApp.m_pRasterFileDlg->PutEnableMethodErrors(FALSE); theApp.m_pRasterFileDlg->PutFileDlgFlags(0); theApp.m_pRasterFileDlg->PutDialogTitle("Save File"); nRet = theApp.m_pRasterFileDlg->ShowSaveDlg((long)this->m_hWnd); if(nRet == 0 && theApp.m_pRasterFileDlg->GetDialogStatus() == DLG_OK) { switch(theApp.m_pRasterFileDlg->GetSaveFormat()) { case FILE_JPEG: case FILE_TIF_JPEG_422: case FILE_TIF_JPEG_411: case FILE_TIFLZW: case FILE_TIFLZW_CMYK: case FILE_TIFLZW_YCC: case FILE_TIF: case FILE_TIF_CMYK: case FILE_TIF_YCC: case FILE_TIF_PACKBITS: case FILE_TIF_PACKBITS_CMYK: case FILE_TIF_PACKBITS_YCC: case FILE_CCITT: case FILE_CCITT_GROUP3_1DIM: case FILE_CCITT_GROUP3_2DIM: case FILE_CCITT_GROUP4: m_Lead.AnnSaveTag(m_bWangMode, FALSE); nMode = 1; break; } sFileName = theApp.m_pRasterFileDlg->GetFileName().copy(); m_Lead.SetSavePage(1); nRet = m_Lead.Save( (LPCTSTR)sFileName, theApp.m_pRasterFileDlg->GetSaveFormat(), theApp.m_pRasterFileDlg->GetSaveBitsPerPixel(), theApp.m_pRasterFileDlg->GetSaveQFactor(), SAVE_OVERWRITE ); if( nRet ) { theApp.DisplayLEADError(nRet); return; } // if format was not TIFF flavor, need to save annotations // in a .ann file if (nMode == 0) { GetAnnName((char*)(LPCTSTR)sFileName,szAnnFile); nRet = m_Lead.AnnSave(szAnnFile, ANNFMT_NATIVE, FALSE, 0, 1); } } else theApp.DisplayLEADError(nRet); } void CAnnotateView::SetZoom(int percent) { m_Lead.SetAutoRepaint(FALSE); m_Lead.SetDstRect(m_Lead.GetDstLeft(), m_Lead.GetDstTop(), m_Lead.GetBitmapWidth() * percent / 100, m_Lead.GetBitmapHeight() * percent / 100); m_Lead.SetDstClipRect(m_Lead.GetDstLeft(), m_Lead.GetDstTop(), m_Lead.GetDstWidth(), m_Lead.GetDstHeight()); m_Lead.SetAutoRepaint(TRUE); } void CAnnotateView::OnSize(UINT nType, int cx, int cy) { CFormView::OnSize(nType, cx, cy); if( IsWindow(m_Lead.m_hWnd) ) { m_Lead.MoveWindow(0,0,cx,cy,TRUE); if( m_Lead.GetBitmap() ) RecalcSizes(); } } void CAnnotateView::OnInitialUpdate() { CFormView::OnInitialUpdate(); UNLOCKSUPPORT(m_Lead); // Unlock support for the LZW files and express capabilities m_Lead.SetAutoPan(FALSE); m_Lead.AnnSetOptions(OPTIONS_NEW_ALL); fFitToWindow = FALSE; ZoomPercent = 100; m_Lead.SetAnnUserMode(ANNUSERMODE_DESIGN); m_Lead.SetAnnTool(ANNTOOL_SELECT); m_Lead2.ShowWindow(SW_HIDE); // create the annotation toolbar. Post the message so that it gets // processed when the program's toolbar has been created. PostMessage(WM_COMMAND, IDM_VIEW_ANNTOOLBAR, 0); } void CAnnotateView::OnUpdateFitimage(CCmdUI* pCmdUI) { pCmdUI->Enable(m_Lead.GetBitmap() != 0); pCmdUI->SetCheck(fFitToWindow); } void CAnnotateView::OnFitimage() { fFitToWindow = TRUE; RecalcSizes(); } void CAnnotateView::OnNormal() { fFitToWindow = FALSE; ZoomPercent = 100; RecalcSizes(); } void CAnnotateView::OnUpdateNormal(CCmdUI* pCmdUI) { pCmdUI->Enable(m_Lead.GetBitmap() != 0); pCmdUI->SetCheck(!fFitToWindow && ZoomPercent == 100); } void CAnnotateView::OnZoom() { CRangeDlg dlg; dlg.m_strTitle = _T("Zoom"); dlg.m_strLabel = _T("&Amount"); dlg.m_nValue = ZoomPercent; dlg.m_nMin = 1; dlg.m_nMax = 800; dlg.m_nPage = 100; if(dlg.DoModal() == IDOK) { fFitToWindow = FALSE; ZoomPercent = dlg.m_nValue; RecalcSizes(); } } void CAnnotateView::OnUpdateZoom(CCmdUI* pCmdUI) { pCmdUI->Enable(m_Lead.GetBitmap() != 0); pCmdUI->SetCheck(!fFitToWindow && ZoomPercent != 100); } void CAnnotateView::OnUpdateEditCopy(CCmdUI* pCmdUI) { pCmdUI->Enable(m_Lead.GetBitmap() != 0); } void CAnnotateView::OnEditCopy() { m_Lead.Copy(COPY_DIB | COPY_DDB | COPY_PALETTE); m_Lead.AnnCopy(ANNFMT_NATIVE, FALSE, FALSE); } void CAnnotateView::OnUpdateEditPaste(CCmdUI* pCmdUI) { pCmdUI->Enable(m_Lead.Paste(PASTE_ISREADY) != 0); } void CAnnotateView::OnEditPaste() { m_Lead.Paste(0); if(m_Lead.GetAnnPasteReady() == TRUE ) m_Lead.AnnPaste(); RecalcSizes(); } void CAnnotateView::RecalcSizes() { if( fFitToWindow ) { int cxZoom, cyZoom; cxZoom = (int) ((long) m_Lead.GetScaleWidth() * 100 / m_Lead.GetBitmapWidth()); cyZoom = (int) ((long) m_Lead.GetScaleHeight() * 100 / m_Lead.GetBitmapHeight()); SetZoom(max(min(cxZoom, cyZoom), 1)); } else SetZoom(ZoomPercent); } void CAnnotateView::OnUpdateUsernone(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnUserMode() == ANNUSERMODE_NONE); } void CAnnotateView::OnUpdateUserdesign(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnUserMode() == ANNUSERMODE_DESIGN); } void CAnnotateView::OnUpdateUserrun(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnUserMode() == ANNUSERMODE_RUN); } void CAnnotateView::OnUsernone() { m_Lead.SetAnnUserMode(ANNUSERMODE_NONE); } void CAnnotateView::OnUserdesign() { m_Lead.SetAnnUserMode(ANNUSERMODE_DESIGN); } void CAnnotateView::OnUserrun() { m_Lead.SetAnnUserMode(ANNUSERMODE_RUN); } void CAnnotateView::OnToolaudio() { m_Lead.SetAnnTool(ANNTOOL_AUDIO); } void CAnnotateView::OnUpdateToolaudio(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_AUDIO); } void CAnnotateView::OnToolbutton() { m_Lead.SetAnnTool(ANNTOOL_BUTTON); } void CAnnotateView::OnUpdateToolbutton(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_BUTTON); } void CAnnotateView::OnToolellipse() { m_Lead.SetAnnTool(ANNTOOL_ELLIPSE); } void CAnnotateView::OnUpdateToolellipse(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_ELLIPSE); } void CAnnotateView::OnToolfreehand() { m_Lead.SetAnnTool(ANNTOOL_FREEHAND); } void CAnnotateView::OnUpdateToolfreehand(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_FREEHAND); } void CAnnotateView::OnToolhilite() { m_Lead.SetAnnTool(ANNTOOL_HILITE); } void CAnnotateView::OnUpdateToolhilite(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_HILITE); } void CAnnotateView::OnToolhotspot() { m_Lead.SetAnnTool(ANNTOOL_HOTSPOT); } void CAnnotateView::OnUpdateToolhotspot(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_HOTSPOT); } void CAnnotateView::OnToolline() { m_Lead.SetAnnTool(ANNTOOL_LINE); } void CAnnotateView::OnUpdateToolline(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_LINE); } void CAnnotateView::OnToolnote() { m_Lead.SetAnnTool(ANNTOOL_NOTE); } void CAnnotateView::OnUpdateToolnote(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_NOTE); } void CAnnotateView::OnToolpointer() { m_Lead.SetAnnTool(ANNTOOL_POINTER); } void CAnnotateView::OnUpdateToolpointer(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_POINTER); } void CAnnotateView::OnToolpolygon() { m_Lead.SetAnnTool(ANNTOOL_POLYGON); } void CAnnotateView::OnUpdateToolpolygon(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_POLYGON); } void CAnnotateView::OnToolpolyline() { m_Lead.SetAnnTool(ANNTOOL_POLYLINE); } void CAnnotateView::OnUpdateToolpolyline(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_POLYLINE); } void CAnnotateView::OnToolrect() { m_Lead.SetAnnTool(ANNTOOL_RECT); } void CAnnotateView::OnUpdateToolrect(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_RECT); } void CAnnotateView::OnToolredact() { m_Lead.SetAnnTool(ANNTOOL_REDACT); } void CAnnotateView::OnUpdateToolredact(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_REDACT); } void CAnnotateView::OnToolselect() { m_Lead.SetAnnTool(ANNTOOL_SELECT); } void CAnnotateView::OnUpdateToolselect(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_SELECT); } void CAnnotateView::OnToolstamp() { m_Lead.SetAnnTool(ANNTOOL_STAMP); } void CAnnotateView::OnUpdateToolstamp(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP); } void CAnnotateView::OnTooltext() { m_Lead.SetAnnTool(ANNTOOL_TEXT); } void CAnnotateView::OnUpdateTooltext(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_TEXT); } void CAnnotateView::OnToolruler() { m_Lead.SetAnnTool(ANNTOOL_RULER); } void CAnnotateView::OnUpdateToolruler(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_RULER); } void CAnnotateView::OnToolcrossproduct() { m_Lead.SetAnnTool(ANNTOOL_CROSSPRODUCT); } void CAnnotateView::OnUpdateToolcrossproduct(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_CROSSPRODUCT); } void CAnnotateView::OnToolpoint() { m_Lead.SetAnnTool(ANNTOOL_POINT); } void CAnnotateView::OnUpdateToolpoint(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_POINT); } void CAnnotateView::OnToolprotractor() { m_Lead.SetAnnTool(ANNTOOL_PROTRACTOR); } void CAnnotateView::OnUpdateToolprotractor(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_PROTRACTOR); } //void CAnnotateView::OnToolvideo() //{ // m_Lead.SetAnnTool(ANNTOOL_VIDEO); //} // //void CAnnotateView::OnUpdateToolvideo(CCmdUI* pCmdUI) //{ // pCmdUI->Enable(TRUE); // pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_VIDEO); //} void CAnnotateView::OnToolpushpin() { m_Lead.SetAnnTool(ANNTOOL_PUSHPIN); } void CAnnotateView::OnUpdateToolpushpin(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_PUSHPIN); } void CAnnotateView::OnToolfreehandhotspot() { m_Lead.SetAnnTool(ANNTOOL_FREEHANDHOTSPOT); } void CAnnotateView::OnUpdateToolfreehandhotspot(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_FREEHANDHOTSPOT); } void CAnnotateView::OnToolstampApproved() { m_Lead.SetAnnTool(ANNTOOL_STAMP_APPROVED); } void CAnnotateView::OnUpdateToolstampApproved(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_APPROVED); } void CAnnotateView::OnToolstampAssigned() { m_Lead.SetAnnTool(ANNTOOL_STAMP_ASSIGNED); } void CAnnotateView::OnUpdateToolstampAssigned(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_ASSIGNED); } void CAnnotateView::OnToolstampChecked() { m_Lead.SetAnnTool(ANNTOOL_STAMP_CHECKED); } void CAnnotateView::OnUpdateToolstampChecked(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_CHECKED); } void CAnnotateView::OnToolstampClatprv() { m_Lead.SetAnnTool(ANNTOOL_STAMP_CLATPRV); } void CAnnotateView::OnUpdateToolstampClatprv(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_CLATPRV); } void CAnnotateView::OnToolstampCopy() { m_Lead.SetAnnTool(ANNTOOL_STAMP_COPY); } void CAnnotateView::OnUpdateToolstampCopy(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_COPY); } void CAnnotateView::OnToolstampDraft() { m_Lead.SetAnnTool(ANNTOOL_STAMP_DRAFT); } void CAnnotateView::OnUpdateToolstampDraft(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_DRAFT); } void CAnnotateView::OnToolstampExtended() { m_Lead.SetAnnTool(ANNTOOL_STAMP_EXTENDED); } void CAnnotateView::OnUpdateToolstampExtended(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_EXTENDED); } void CAnnotateView::OnToolstampFax() { m_Lead.SetAnnTool(ANNTOOL_STAMP_FAX); } void CAnnotateView::OnUpdateToolstampFax(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_FAX); } void CAnnotateView::OnToolstampFaxed() { m_Lead.SetAnnTool(ANNTOOL_STAMP_FAXED); } void CAnnotateView::OnUpdateToolstampFaxed(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_FAXED); } void CAnnotateView::OnToolstampImportant() { m_Lead.SetAnnTool(ANNTOOL_STAMP_IMPORTANT); } void CAnnotateView::OnUpdateToolstampImportant(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_IMPORTANT); } void CAnnotateView::OnToolstampInvoice() { m_Lead.SetAnnTool(ANNTOOL_STAMP_INVOICE); } void CAnnotateView::OnUpdateToolstampInvoice(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_INVOICE); } void CAnnotateView::OnToolstampNotice() { m_Lead.SetAnnTool(ANNTOOL_STAMP_NOTICE); } void CAnnotateView::OnUpdateToolstampNotice(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_NOTICE); } void CAnnotateView::OnToolstampOfficial() { m_Lead.SetAnnTool(ANNTOOL_STAMP_OFFICIAL); } void CAnnotateView::OnUpdateToolstampOfficial(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_OFFICIAL); } void CAnnotateView::OnToolstampOnfile() { m_Lead.SetAnnTool(ANNTOOL_STAMP_ONFILE); } void CAnnotateView::OnUpdateToolstampOnfile(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_ONFILE); } void CAnnotateView::OnToolstampPaid() { m_Lead.SetAnnTool(ANNTOOL_STAMP_PAID); } void CAnnotateView::OnUpdateToolstampPaid(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_PAID); } void CAnnotateView::OnToolstampPassed() { m_Lead.SetAnnTool(ANNTOOL_STAMP_PASSED); } void CAnnotateView::OnUpdateToolstampPassed(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_PASSED); } void CAnnotateView::OnToolstampPending() { m_Lead.SetAnnTool(ANNTOOL_STAMP_PENDING); } void CAnnotateView::OnUpdateToolstampPending(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_PENDING); } void CAnnotateView::OnToolstampProcessed() { m_Lead.SetAnnTool(ANNTOOL_STAMP_PROCESSED); } void CAnnotateView::OnUpdateToolstampProcessed(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_PROCESSED); } void CAnnotateView::OnToolstampReceived() { m_Lead.SetAnnTool(ANNTOOL_STAMP_RECEIVED); } void CAnnotateView::OnUpdateToolstampReceived(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_RECEIVED); } void CAnnotateView::OnToolstampRejected() { m_Lead.SetAnnTool(ANNTOOL_STAMP_REJECTED); } void CAnnotateView::OnUpdateToolstampRejected(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_REJECTED); } void CAnnotateView::OnToolstampRelease() { m_Lead.SetAnnTool(ANNTOOL_STAMP_RELEASE); } void CAnnotateView::OnUpdateToolstampRelease(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_RELEASE); } void CAnnotateView::OnToolstampSent() { m_Lead.SetAnnTool(ANNTOOL_STAMP_SENT); } void CAnnotateView::OnUpdateToolstampSent(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_SENT); } void CAnnotateView::OnToolstampShipped() { m_Lead.SetAnnTool(ANNTOOL_STAMP_SHIPPED); } void CAnnotateView::OnUpdateToolstampShipped(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_SHIPPED); } void CAnnotateView::OnToolstampTopsecret() { m_Lead.SetAnnTool(ANNTOOL_STAMP_TOPSECRET); } void CAnnotateView::OnUpdateToolstampTopsecret(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_TOPSECRET); } void CAnnotateView::OnToolstampUrgent() { m_Lead.SetAnnTool(ANNTOOL_STAMP_URGENT); } void CAnnotateView::OnUpdateToolstampUrgent(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_URGENT); } void CAnnotateView::OnToolstampVoid() { m_Lead.SetAnnTool(ANNTOOL_STAMP_VOID); } void CAnnotateView::OnUpdateToolstampVoid(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_STAMP_VOID); } void CAnnotateView::OnTooluser() { m_Lead.SetAnnTool(ANNTOOL_USER_FIRST); } void CAnnotateView::OnUpdateTooluser(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_Lead.GetAnnTool() == ANNTOOL_USER_FIRST); } /* This function returns the coordinate of the right margin for the frame window The coordinates are relative to the client area of m_Lead */ float CAnnotateView::GetRightOffset() { RECT rc; CWnd *pMainWnd = theApp.GetMainWnd(); pMainWnd->GetClientRect(&rc); pMainWnd->MapWindowPoints(&m_Lead, &rc); return (float)(rc.right); } void CAnnotateView::OnViewAnnToolbar() { CAnnToolbar AnnToolbar = m_Lead.GetAnnToolbar(); // if this is the first time we got here, create the toolbar if(!AnnToolbar.GetHWnd()) { // creating the toolbar for the first time AnnToolbar.SetVisible(FALSE); AnnToolbar.Create(GetRightOffset(), 0.0f, ANNTOOLALIGN_TOP + ANNTOOLALIGN_RIGHT); if(m_fAddUserButton) { m_fAddUserButton = FALSE; // add a user-default button AnnToolbar.SetButtonTool(AnnToolbar.GetButtonCount(), ANNTOOL_USER_FIRST); m_Lead2.SetEnableMethodErrors(FALSE); if(m_Lead2.Load("..\\images\\user_btn.bmp", 0, 0, 1)) m_Lead2.Load("..\\..\\..\\..\\images\\user_btn.bmp", 0, 0, 1); // if we loaded the bitmap sussessfully, set it for the user button if(m_Lead2.GetBitmap()) { AnnToolbar.SetButtonBitmapUp(AnnToolbar.GetButtonCount(), m_Lead2.GetBitmap()); // AnnToolbar.SetButtonToolTipTextID(AnnToolbar.GetButtonCount(), -1); // AnnToolbar.SetButtonToolTipText(AnnToolbar.GetButtonCount(), "User defined tool"); AnnToolbar.SetButtonCount(AnnToolbar.GetButtonCount() + 1); } } } AnnToolbar.SetVisible(! AnnToolbar.GetVisible()); } void CAnnotateView::OnUpdateViewAnnToolbar(CCmdUI* pCmdUI) { CAnnToolbar AnnToolbar = m_Lead.GetAnnToolbar(); pCmdUI->Enable(TRUE); pCmdUI->SetCheck(AnnToolbar.GetHWnd() && AnnToolbar.GetVisible()); } void CAnnotateView::OnDraw(CDC* pDC) { CRect rcClip; CSize winext; CSize viewext; CSize paintext; if( m_Lead.GetBitmap() != 0 ) if(pDC->IsPrinting()) { pDC->SaveDC(); winext = pDC->GetWindowExt(); viewext = pDC->GetViewportExt(); paintext.cx = MulDiv((int) m_Lead.GetBitmapWidth(), viewext.cx, winext.cx); paintext.cy = MulDiv((int) m_Lead.GetBitmapHeight(), viewext.cy, winext.cy); pDC->SetMapMode(MM_TEXT); // Must use 1,1, in V13 b/c of center option m_Lead.Render((OLE_HANDLE) pDC->m_hDC, (float) 1, (float) 1, (float) paintext.cx, (float) paintext.cy); pDC->RestoreDC(-1); } } LRESULT CAnnotateView::OnDoRealize(WPARAM wParam, LPARAM lParam) { if( !IsWindow(m_Lead.m_hWnd) || !m_Lead.GetBitmap() ) return FALSE; if(lParam) { return m_Lead.SendMessage(WM_PALETTECHANGED, wParam); } else { return m_Lead.SendMessage(WM_QUERYNEWPALETTE,0); } } void CAnnotateView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { CFormView::OnActivateView(bActivate, pActivateView, pDeactiveView); if (bActivate) { ASSERT(pActivateView == this); OnDoRealize((WPARAM)theApp.m_pMainWnd->m_hWnd, (LPARAM) FALSE); // same as SendMessage(WM_DOREALIZE); } } BEGIN_EVENTSINK_MAP(CAnnotateView, CFormView) //{{AFX_EVENTSINK_MAP(CAnnotateView) ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 9 /* AnnClicked */, OnAnnClickedLeadctrl1, VTS_I4) ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 7 /* AnnCreate */, OnAnnCreateLeadctrl1, VTS_I4) ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 10 /* AnnDrawn */, OnAnnDrawnLeadctrl1, VTS_I4) ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 20 /* AnnHyperlink */, OnAnnHyperlinkLeadctrl1, VTS_I4 VTS_I2 VTS_I4 VTS_I4 VTS_I4 VTS_I4 VTS_I4) ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 21 /* AnnHyperlinkMenu */, OnAnnHyperlinkMenuLeadctrl1, VTS_VARIANT VTS_I2) ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 28 /* AnnMouseDown */, OnAnnMouseDownLeadctrl1, VTS_I2 VTS_I2 VTS_I4 VTS_I4) ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 29 /* AnnMouseMove */, OnAnnMouseMoveLeadctrl1, VTS_I2 VTS_I2 VTS_I4 VTS_I4) ON_EVENT(CAnnotateView, IDC_LEADCTRL1, 30 /* AnnMouseUp */, OnAnnMouseUpLeadctrl1, VTS_I2 VTS_I2 VTS_I4 VTS_I4) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() void CAnnotateView::OnAnnClickedLeadctrl1(long hObject) { CString string; switch(m_Lead.AnnGetType(hObject)) { case ANNOBJECT_BUTTON: string.Format("Button with tag %ld was clicked", m_Lead.AnnGetTag(hObject)); break; case ANNOBJECT_HOTSPOT: string.Format("Hot Spot with tag %ld was clicked", m_Lead.AnnGetTag(hObject)); break; case ANNOBJECT_FREEHANDHOTSPOT: string.Format("Freehand Hot Spot with tag %ld was clicked", m_Lead.AnnGetTag(hObject)); break; } MessageBox( string, "CLICK notification" ); } void CAnnotateView::OnAnnCreateLeadctrl1(long hObject) { /* set tags only for buttons and HotSpots */ switch(m_Lead.AnnGetType(hObject)) { case ANNOBJECT_BUTTON: case ANNOBJECT_HOTSPOT: case ANNOBJECT_FREEHANDHOTSPOT: m_iTag++; m_Lead.AnnSetTag(hObject, m_iTag); break; } } void CAnnotateView::OnAnnDrawnLeadctrl1(long hObject) { /* reset the tool to select after each object is created */ m_Lead.SetAnnTool(ANNTOOL_SELECT); } void CAnnotateView::OnEditLockannotations() { CPassDlg PassDlg; if(PassDlg.DoModal() == IDOK) m_Lead.AnnLock(m_Lead.GetAnnContainer(), PassDlg.m_csKey, TRUE); } void CAnnotateView::OnUpdateEditLockannotations(CCmdUI* pCmdUI) { if (m_Lead.GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); } void CAnnotateView::OnEditUnlockannotations() { CPassDlg PassDlg; if(PassDlg.DoModal() == IDOK) m_Lead.AnnUnlock(m_Lead.GetAnnContainer(), PassDlg.m_csKey); } void CAnnotateView::OnUpdateEditUnlockannotations(CCmdUI* pCmdUI) { if (m_Lead.GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); } void CAnnotateView::OnEditShowlockedobjects() { m_Lead.SetAnnShowLockedIcon(!m_Lead.GetAnnShowLockedIcon()); } void CAnnotateView::OnUpdateEditShowlockedobjects(CCmdUI* pCmdUI) { if (m_Lead.GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); pCmdUI->SetCheck(m_Lead.GetAnnShowLockedIcon()); } void CAnnotateView::OnEditRealizeredactobjects() { m_Lead.AnnRealize(TRUE); } void CAnnotateView::OnUpdateEditRealizeredactobjects(CCmdUI* pCmdUI) { if (m_Lead.GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); } void CAnnotateView::OnEditRestoreredactobjects() { int nRet; nRet = m_Lead.AnnUnrealize(m_Lead.GetAnnContainer(), FALSE); if (nRet == ERROR_ANN_LOCKED) AfxMessageBox("Some redact objects are locked and cannot be restored"); } void CAnnotateView::OnUpdateEditRestoreredactobjects(CCmdUI* pCmdUI) { if (m_Lead.GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); } void CAnnotateView::OnEditWangcompatibletagmode() { m_bWangMode = !m_bWangMode; } void CAnnotateView::OnUpdateEditWangcompatibletagmode(CCmdUI* pCmdUI) { if (m_Lead.GetAnnContainer() > 0) pCmdUI->Enable(TRUE); else pCmdUI->Enable(FALSE); pCmdUI->SetCheck(m_bWangMode); } void CAnnotateView::OnAnnHyperlinkLeadctrl1(long hObject, short iParamCount, long lParam1, long lParam2, long lParam3, long lParam4, long lParam5) { AfxMessageBox("Object's Hyperlink was activated!"); } void CAnnotateView::OnAnnHyperlinkMenuLeadctrl1(const VARIANT FAR& aObjects, short uCount) { long x; int hObject; CLinkDlg LinkDlg; if(LinkDlg.DoModal() == IDOK) { switch(LinkDlg.m_nType) { case ANNLINK_NONE: case ANNLINK_ANNEVENT: for(x=0; x dy) { // adjust y to be as far from y0 as x is from x0 if(y > y0) y = y0 + dx; else y = y0 - dx; } else { // adjust x to be as far from x0 as y is from y0 if (x > x0) x = x0 + dy; else x = x0 - dy; } // set the mouse cursor and update its position m_Lead.SetMousePos((float)x, (float)y, FALSE); } } void CAnnotateView::OnAnnMouseMoveLeadctrl1(short Button, short Shift, long x, long y) { if(Button == 1) { switch(m_Lead.GetAnnTool()) { case ANNTOOL_USER_FIRST: // update the objects from the x, y coordinate m_Lead.AnnDefine(hRectObject, (float)x, (float)y, ANNDEFINE_UPDATE); m_Lead.AnnDefine(hEllipseObject, (float)x, (float)y, ANNDEFINE_UPDATE); break; case ANNTOOL_ELLIPSE: case ANNTOOL_RECT: AdjustMousePos(Shift, x, y); break; } } } void CAnnotateView::OnAnnMouseUpLeadctrl1(short Button, short Shift, long x, long y) { switch(m_Lead.GetAnnTool()) { case ANNTOOL_USER_FIRST: m_Lead.AnnDefine(hRectObject, (float)x, (float)y, ANNDEFINE_END); m_Lead.AnnDefine(hEllipseObject, (float)x, (float)y, ANNDEFINE_END); m_Lead.AnnSetSelected(hRectObject, TRUE, FALSE); m_Lead.AnnSetSelected(hEllipseObject, TRUE, FALSE); m_Lead.AnnGroup(m_Lead.GetAnnContainer(), ANNFLAG_RECURSE + ANNFLAG_SELECTED, ""); // The user-defined tool doesn't fire the annDrawn event, so we'll send them OnAnnDrawnLeadctrl1(hEllipseObject); OnAnnDrawnLeadctrl1(hRectObject); hEllipseObject = hRectObject = NULL; break; case ANNTOOL_ELLIPSE: case ANNTOOL_RECT: AdjustMousePos(Shift, x, y); break; } } void CAnnotateView::OnEditApplyencryptors() { m_Lead.AnnEncryptApply(m_Lead.GetAnnContainer(), ANNENCRYPTAPPLY_ENCRYPTOR, FALSE); } void CAnnotateView::OnEditApplydecryptors() { m_Lead.AnnEncryptApply(m_Lead.GetAnnContainer(), ANNENCRYPTAPPLY_DECRYPTOR, FALSE); }