// AnnDemoView.cpp : implementation of the CAnnDemoView class // #include "stdafx.h" #include "AnnDemo.h" #include "AnnDoc.h" #include "AnnView.h" #include "MainFrm.h" #include "RangeDlg.h" #include "PassDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAnnDemoView BOOL CAnnDemoView::m_bAnnHilightCustom; IMPLEMENT_DYNCREATE(CAnnDemoView, CView) BEGIN_MESSAGE_MAP(CAnnDemoView, CView) //{{AFX_MSG_MAP(CAnnDemoView) ON_WM_SIZE() ON_WM_CREATE() ON_COMMAND(IDM_FITIMAGE, OnFitimage) ON_UPDATE_COMMAND_UI(IDM_FITIMAGE, OnUpdateFitimage) 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_VIEW_ANNOTATINTOOL, OnUpdateViewAnnotatintool) ON_COMMAND(ID_VIEW_ANNOTATINTOOL, OnViewAnnotatintool) ON_COMMAND(IDM_TOOLAUDIO, OnToolaudio) ON_UPDATE_COMMAND_UI(IDM_TOOLAUDIO, OnUpdateToolCheckMark) ON_COMMAND(IDM_TOOLELLIPSE, OnToolellipse) ON_COMMAND(IDM_TOOLBUTTON, OnToolbutton) ON_COMMAND(IDM_TOOLFREEHAND, OnToolfreehand) ON_COMMAND(IDM_TOOLHILITE, OnToolhilite) ON_COMMAND(IDM_TOOLHOTSPOT, OnToolhotspot) ON_COMMAND(IDM_TOOLLINE, OnToolline) ON_COMMAND(IDM_TOOLNOTE, OnToolnote) ON_COMMAND(IDM_TOOLPOINTER, OnToolpointer) ON_COMMAND(IDM_TOOLPOLYGON, OnToolpolygon) ON_COMMAND(IDM_TOOLPOLYLINE, OnToolpolyline) ON_COMMAND(IDM_TOOLRECT, OnToolrect) ON_COMMAND(IDM_TOOLREDACT, OnToolredact) ON_COMMAND(IDM_TOOLRULER, OnToolruler) ON_COMMAND(IDM_TOOLSELECT, OnToolselect) ON_COMMAND(IDM_TOOLSTAMP, OnToolstamp) ON_COMMAND(IDM_TOOLTEXT, OnTooltext) ON_COMMAND(IDM_USERDESIGN, OnUserdesign) ON_UPDATE_COMMAND_UI(IDM_USERDESIGN, OnUpdateUserdesign) ON_COMMAND(IDM_USERRUN, OnUserrun) ON_UPDATE_COMMAND_UI(IDM_USERRUN, OnUpdateUserrun) ON_COMMAND(IDM_SHOWLOCK, OnShowlock) ON_UPDATE_COMMAND_UI(IDM_SHOWLOCK, OnUpdateShowlock) ON_COMMAND(IDM_UNLOCK, OnUnlock) ON_COMMAND(IDM_LOCK, OnLock) ON_UPDATE_COMMAND_UI(IDM_LOCK, OnUpdateLock) ON_COMMAND(IDM_UNREALIZE, OnUnrealize) ON_COMMAND(IDM_REALIZE, OnRealize) ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs) ON_COMMAND(IDM_VIEW_PANWND, OnViewPanwnd) ON_COMMAND(ID_EDIT_COPY, OnEditCopy) ON_COMMAND(ID_VIEW_CENTERIMAGE, OnViewCenterimage) ON_UPDATE_COMMAND_UI(ID_VIEW_CENTERIMAGE, OnUpdateViewCenterimage) ON_UPDATE_COMMAND_UI(ID_INDICATOR_FILENAME, OnUpdateIndicatorFileName) ON_UPDATE_COMMAND_UI(ID_INDICATOR_SIZE, OnUpdateIndicatorSize) ON_UPDATE_COMMAND_UI(ID_INDICATOR_BPP, OnUpdateIndicatorBPP) ON_UPDATE_COMMAND_UI(ID_INDICATOR_ZOOM, OnUpdateIndicatorZoom) ON_UPDATE_COMMAND_UI(ID_INDICATOR_MEMSIZE, OnUpdateIndicatorMemSize) ON_WM_DROPFILES() ON_UPDATE_COMMAND_UI(IDM_VIEW_PANWND, OnUpdateViewPanwnd) ON_COMMAND(IDM_TOOL_STAMP_APPROVED, OnToolStampApproved) ON_COMMAND(IDM_TOOLPOINT, OnToolpoint) ON_COMMAND(IDM_TOOLFREEHANDHOTSPOT, OnToolfreehandhotspot) ON_COMMAND(IDM_TOOLCROSSPRODUCT, OnToolcrossproduct) ON_COMMAND(IDM_TOOLPROTRACTOR, OnToolprotractor) ON_COMMAND(IDM_TOOLPUSHPIN, OnToolpushpin) ON_COMMAND(IDM_TOOLVIDEO, OnToolvideo) ON_COMMAND(IDM_TOOL_STAMP_ASSIGNED, OnToolStampAssigned) ON_COMMAND(IDM_TOOL_STAMP_CHECKED, OnToolStampChecked) ON_COMMAND(IDM_TOOL_STAMP_CLATPRV, OnToolStampClatprv) ON_COMMAND(IDM_TOOL_STAMP_COPY, OnToolStampCopy) ON_COMMAND(IDM_TOOL_STAMP_DRAFT, OnToolStampDraft) ON_COMMAND(IDM_TOOL_STAMP_EXTENDED, OnToolStampExtended) ON_COMMAND(IDM_TOOL_STAMP_FAX, OnToolStampFax) ON_COMMAND(IDM_TOOL_STAMP_FAXED, OnToolStampFaxed) ON_COMMAND(IDM_TOOL_STAMP_IMPORTANT, OnToolStampImportant) ON_COMMAND(IDM_TOOL_STAMP_INVOICE, OnToolStampInvoice) ON_COMMAND(IDM_TOOL_STAMP_NOTICE, OnToolStampNotice) ON_COMMAND(IDM_TOOL_STAMP_OFFICIAL, OnToolStampOfficial) ON_COMMAND(IDM_TOOL_STAMP_ONFILE, OnToolStampOnfile) ON_COMMAND(IDM_TOOL_STAMP_PAID, OnToolStampPaid) ON_COMMAND(IDM_TOOL_STAMP_PASSED, OnToolStampPassed) ON_COMMAND(IDM_TOOL_STAMP_PENDING, OnToolStampPending) ON_COMMAND(IDM_TOOL_STAMP_PROCESSED, OnToolStampProcessed) ON_COMMAND(IDM_TOOL_STAMP_RECEIVED, OnToolStampReceived) ON_COMMAND(IDM_TOOL_STAMP_REJECTED, OnToolStampRejected) ON_COMMAND(IDM_TOOL_STAMP_RELEASE, OnToolStampRelease) ON_COMMAND(IDM_TOOL_STAMP_SENT, OnToolStampSent) ON_COMMAND(IDM_TOOL_STAMP_SHIPPED, OnToolStampShipped) ON_COMMAND(IDM_TOOL_STAMP_TOPSECRET, OnToolStampTopsecret) ON_COMMAND(IDM_TOOL_STAMP_URGENT, OnToolStampUrgent) ON_COMMAND(IDM_TOOL_STAMP_VOID, OnToolStampVoid) ON_COMMAND(ID_VIEW_DOUBLEBUFFER, OnViewDoublebuffer) ON_UPDATE_COMMAND_UI(ID_VIEW_DOUBLEBUFFER, OnUpdateViewDoublebuffer) ON_COMMAND(ID_EDIT_TOOL_CURVE, OnEditToolCurve) ON_COMMAND(ID_EDIT_TOOL_CLOSEDCURVE, OnEditToolClosedcurve) ON_COMMAND(ID_EDIT_TOOL_RECHTEXT, OnEditToolRechtext) ON_COMMAND(ID_EDIT_TOOL_TEXTPOINTER, OnEditToolTextpointer) ON_COMMAND(ID_EDIT_TOOL_POLYRULER, OnEditToolPolyruler) ON_COMMAND(ID_EDIT_TOOL_ENCRYPT, OnEditToolEncrypt) ON_UPDATE_COMMAND_UI(ID_EDIT_TOOL_CURVE, OnUpdateEditToolCurve) ON_UPDATE_COMMAND_UI(ID_EDIT_TOOL_CLOSEDCURVE, OnUpdateEditToolClosedcurve) ON_UPDATE_COMMAND_UI(ID_EDIT_TOOL_RECHTEXT, OnUpdateEditToolRechtext) ON_UPDATE_COMMAND_UI(ID_EDIT_TOOL_TEXTPOINTER, OnUpdateEditToolTextpointer) ON_UPDATE_COMMAND_UI(ID_EDIT_TOOL_POLYRULER, OnUpdateEditToolPolyruler) ON_UPDATE_COMMAND_UI(ID_EDIT_TOOL_ENCRYPT, OnUpdateEditToolEncrypt) ON_COMMAND(IDM_APPLYDECRYPTORS, OnApplydecryptors) ON_COMMAND(IDM_APPLYENCRYPTORS, OnApplyencryptors) ON_COMMAND(ID_VIEW_CHANGEHILIGHTANDCURSORS, OnViewChangeHilightAndCursors) ON_UPDATE_COMMAND_UI(ID_VIEW_CHANGEHILIGHTANDCURSORS, OnUpdateViewChangehilightandcursors) ON_COMMAND_RANGE(IDM_NEW_CHECKALL, IDM_NEW_TEXT_OPTIONS, OnNewOptions) ON_UPDATE_COMMAND_UI(IDM_TOOLELLIPSE, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLBUTTON, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLFREEHAND, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLHOTSPOT, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLLINE, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLNOTE, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLPOINTER, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLPOLYGON, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLPOLYLINE, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLRECT, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLREDACT, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLRULER, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLSELECT, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLSTAMP, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI(IDM_TOOLTEXT, OnUpdateToolCheckMark) ON_UPDATE_COMMAND_UI_RANGE(IDM_NEW_CHECKALL, IDM_NEW_UNCHECKALL, OnUpdateNewOptions) //}}AFX_MSG_MAP // Standard printing commands ON_MESSAGE(WM_HANDLEPALETTE, OnHandlePalette) ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAnnDemoView construction/destruction CAnnDemoView::CAnnDemoView() { // TODO: add construction code here m_bShowToolbar = TRUE; m_bDoubleBufferEnabled = TRUE; m_LAnnoWnd.GetAutomationObject().GetAutoCursor(ANNAUTOCURSOR_DRAWNEW, &m_hCursorDefaultAnnDrawNew); m_LAnnoWnd.GetAutomationObject().GetAutoCursor(ANNAUTOCURSOR_HANDLE, &m_hCursorDefaultAnnHandle); m_LAnnoWnd.GetAutomationObject().GetAutoCursor(ANNAUTOCURSOR_MOVE, &m_hCursorDefaultAnnMove); m_LAnnoWnd.GetAutomationObject().GetAutoCursor(ANNAUTOCURSOR_SELECT, &m_hCursorDefaultAnnSelect); m_hCursorAnnDrawNew = LoadCursor(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDC_ANNCROSS)); m_hCursorAnnHandle = LoadCursor(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDC_ANNHANDLE)); m_hCursorAnnMove = LoadCursor(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDC_ANNMOVE)); m_hCursorAnnSelect = LoadCursor(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDC_ANNSELECT)); } CAnnDemoView::~CAnnDemoView() { } BOOL CAnnDemoView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs cs.style|=(WS_CLIPCHILDREN|WS_CLIPSIBLINGS); return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CAnnDemoView drawing void CAnnDemoView::OnDraw(CDC* pDC) { CAnnDemoDoc * pDoc = GetDocument(); ASSERT_VALID(pDoc); if (pDC->IsPrinting()) m_LAnnoWnd.PrintImage(pDC); } ///////////////////////////////////////////////////////////////////////////// // CAnnDemoView printing BOOL CAnnDemoView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation pInfo->SetMaxPage(1); return DoPreparePrinting(pInfo); } void CAnnDemoView::OnUpdateIndicatorFileName(CCmdUI* pCmdUI) { L_TCHAR szBuffer[256]; L_UINT uBuffSize = sizeof(szBuffer); memset(szBuffer,0,sizeof(szBuffer)); m_LAnnoWnd.GetFileName(szBuffer, &uBuffSize); pCmdUI->SetText(szBuffer) ; } void CAnnDemoView::OnUpdateIndicatorSize(CCmdUI* pCmdUI) { L_INT nHeight, nWidth, nViewPerspictive; L_TCHAR szBuffer[50] ; nHeight = m_LAnnoWnd.GetHeight(); nWidth = m_LAnnoWnd.GetWidth(); nViewPerspictive = m_LAnnoWnd.GetViewPerspective(); memset(szBuffer,0,sizeof(szBuffer)) ; wsprintf(szBuffer,_T("%d X %d, %s\n"), nWidth, nHeight, (LPTSTR)(nViewPerspictive == TOP_LEFT ? _T("TOP_LEFT") : nViewPerspictive == TOP_RIGHT ? _T("TOP_RIGHT") : nViewPerspictive == BOTTOM_RIGHT ? _T("BOTTOM_RIGHT") : nViewPerspictive == TOP_LEFT90 ? _T("TOP_LEFT90") : nViewPerspictive == TOP_LEFT270? _T("TOP_LEFT270") : _T("BOTTOM_LEFT"))); pCmdUI->SetText(szBuffer) ; } void CAnnDemoView::OnUpdateIndicatorBPP(CCmdUI* pCmdUI) { L_INT nBPP ; L_TCHAR szBuffer[50] ; nBPP = m_LAnnoWnd.GetBitsPerPixel(); memset(szBuffer,0,sizeof(szBuffer)) ; wsprintf(szBuffer,_T("%d BPP\n"),nBPP) ; pCmdUI->SetText(szBuffer) ; } void CAnnDemoView::OnUpdateIndicatorZoom(CCmdUI* pCmdUI) { L_UINT uZoomMode, uZoomPercent ; L_TCHAR szBuffer[50] ; uZoomMode = m_LAnnoWnd.GetZoomMode(); memset(szBuffer,0,sizeof(szBuffer)) ; switch (uZoomMode) { case ZOOM_NORMAL: wsprintf(szBuffer,_T("Normal Size")); break ; case ZOOM_FIT: wsprintf(szBuffer,_T("Fit To Window")); break ; default: uZoomPercent = m_LAnnoWnd.GetZoomPercent(); wsprintf(szBuffer,_T("%u%%"),uZoomPercent); break; } pCmdUI->SetText(szBuffer) ; } void CAnnDemoView::OnUpdateIndicatorMemSize(CCmdUI* pCmdUI) { L_UINT32 ulSize ; L_TCHAR szBuffer[50] ; ulSize = m_LAnnoWnd.GetMemSize(); memset(szBuffer,0,sizeof(szBuffer)) ; wsprintf(szBuffer,_T("%lu bytes, MEMORY"),ulSize); pCmdUI->SetText(szBuffer) ; } void CAnnDemoView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo) { // TODO: add extra initialization before printing } void CAnnDemoView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CAnnDemoView diagnostics #ifdef _DEBUG void CAnnDemoView::AssertValid() const { CView::AssertValid(); } void CAnnDemoView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CAnnDemoDoc* CAnnDemoView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAnnDemoDoc))); return (CAnnDemoDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CAnnDemoView message handlers void CAnnDemoView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); // TODO: Add your message handler code here m_LAnnoWnd.FitToParent(TRUE); } int CAnnDemoView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; L_INT nRetCode = SUCCESS; HWND hWnd =!NULL; //.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.> // // There are two way to use LEAD controls : // 1.As a control: // Enable A and Disable B // 2.As a Window : // Enable B and Disable As // // A : (LBitmapWindow works as a Window ) nRetCode = m_LAnnoWnd.SetWndHandle(m_hWnd); //End of A. // B : (LBitmapWindow works as a Control) /*hWnd = m_LAnnoWnd.CreateWnd(m_hWnd,0, WS_VISIBLE|L_BS_CENTER| L_BS_PROCESSKEYBOARD, 0,0,200,200); */ //End of B. m_LAnnoWnd.EnableDoubleBuffer(m_bDoubleBufferEnabled); if(nRetCode!=SUCCESS||hWnd==NULL) { LBase::DisplayErrorFromList(); return -1; } return 0; } void CAnnDemoView::OnFitimage() { // TODO: Add your command handler code here m_LAnnoWnd.SetZoomMode(ZOOM_FIT); } void CAnnDemoView::OnUpdateFitimage(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->SetCheck((m_LAnnoWnd.GetZoomMode()==ZOOM_FIT)); } void CAnnDemoView::OnNormal() { // TODO: Add your command handler code here m_LAnnoWnd.SetZoomMode(ZOOM_NORMAL); } void CAnnDemoView::OnUpdateNormal(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->SetCheck((m_LAnnoWnd.GetZoomMode()==ZOOM_NORMAL)); } void CAnnDemoView::OnZoom() { // TODO: Add your command handler code here CRangeDlg dlg; dlg.m_strTitle = _T("Zoom"); dlg.m_strLabel = _T("&Amount"); dlg.m_nValue = m_LAnnoWnd.GetZoomPercent(); dlg.m_nMin = 1; dlg.m_nMax = 800; dlg.m_nPage = 100; dlg.m_nValue = (int)m_LAnnoWnd.GetZoomPercent(); if(dlg.DoModal() == IDOK) m_LAnnoWnd.SetZoomPercent((L_UINT)dlg.m_nValue); } void CAnnDemoView::OnUpdateZoom(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->SetCheck((m_LAnnoWnd.GetZoomMode()==ZOOM_FACTOR)); } void CAnnDemoView::OnUpdateViewAnnotatintool(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here if (!m_LAnnoWnd.GetToolBar().IsCreated()) m_bShowToolbar = FALSE; pCmdUI->SetCheck(m_bShowToolbar); pCmdUI->Enable(m_LAnnoWnd.GetContainerObject().GetUserMode()==ANNUSER_DESIGN); } void CAnnDemoView::OnViewAnnotatintool() { // TODO: Add your command handler code here m_bShowToolbar = !m_bShowToolbar; if (m_bShowToolbar==FALSE) { if (m_LAnnoWnd.GetToolBar().IsCreated()) m_LAnnoWnd.GetToolBar().Destroy(); } else { m_LAnnoWnd.GetToolBar().Create(AfxGetMainWnd()->m_hWnd, NULL, ANNTOOLALIGN_RIGHT | ANNTOOLALIGN_TOP, TRUE); AfxGetMainWnd()->SetActiveWindow(); } } void CAnnDemoView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { // TODO: Add your specialized code here and/or call the base class CView::OnActivateView(bActivate, pActivateView, pDeactiveView); if (bActivate) { if (m_LAnnoWnd.GetToolBar().IsCreated()) { if (m_LAnnoWnd.GetContainerObject().GetUserMode()!=ANNUSER_DESIGN ||!m_bShowToolbar) m_LAnnoWnd.GetToolBar().Destroy(); } else if (m_LAnnoWnd.GetContainerObject().GetUserMode()==ANNUSER_DESIGN && m_bShowToolbar) m_LAnnoWnd.GetToolBar().Create(AfxGetMainWnd()->m_hWnd, NULL, ANNTOOLALIGN_RIGHT | ANNTOOLALIGN_TOP, TRUE); if (m_LAnnoWnd.GetToolBar().IsCreated()) m_LAnnoWnd.GetToolBar().SetToolChecked(m_LAnnoWnd.GetAutomationObject().GetTool()); m_LAnnoWnd.HandlePalette(WM_QUERYNEWPALETTE,0,0); ::SetFocus(m_LAnnoWnd.GetBitmapWnd()); m_LAnnoWnd.GetAutomationObject().SetAutoCursor(ANNAUTOCURSOR_DRAWNEW, m_bAnnHilightCustom ? m_hCursorAnnDrawNew : m_hCursorDefaultAnnDrawNew); m_LAnnoWnd.GetAutomationObject().SetAutoCursor(ANNAUTOCURSOR_HANDLE, m_bAnnHilightCustom ? m_hCursorAnnHandle : m_hCursorDefaultAnnHandle); m_LAnnoWnd.GetAutomationObject().SetAutoCursor(ANNAUTOCURSOR_MOVE, m_bAnnHilightCustom ? m_hCursorAnnMove : m_hCursorDefaultAnnMove); m_LAnnoWnd.GetAutomationObject().SetAutoCursor(ANNAUTOCURSOR_SELECT, m_bAnnHilightCustom ? m_hCursorAnnSelect : m_hCursorDefaultAnnSelect); } else { if (m_bShowToolbar) //make sure it is still visible m_bShowToolbar = m_LAnnoWnd.GetToolBar().IsCreated(); } } void CAnnDemoView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class if (!m_LAnnoWnd.GetToolBar().IsCreated()) m_LAnnoWnd.GetToolBar().Create(AfxGetMainWnd()->m_hWnd, NULL, ANNTOOLALIGN_RIGHT | ANNTOOLALIGN_TOP, TRUE, NULL, NULL); m_LAnnoWnd.ToolChecked(ANNTOOL_SELECT); } void CAnnDemoView::OnToolaudio() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_AUDIO); } void CAnnDemoView::OnToolbutton() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_BUTTON); } void CAnnDemoView::OnToolellipse() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_ELLIPSE); } void CAnnDemoView::OnUpdateToolCheckMark(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here m_LAnnoWnd.ToolChecked(m_LAnnoWnd.GetToolBar().GetToolChecked()); pCmdUI->SetCheck(pCmdUI->m_nID==m_LAnnoWnd.GetCurrentObjectID()); } void CAnnDemoView::OnToolfreehand() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_FREEHAND); } void CAnnDemoView::OnToolhilite() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_HILITE); } void CAnnDemoView::OnToolhotspot() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_HOTSPOT); } void CAnnDemoView::OnToolline() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_LINE); } void CAnnDemoView::OnToolnote() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_NOTE); } void CAnnDemoView::OnToolpointer() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_POINTER); } void CAnnDemoView::OnToolpolygon() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_POLYGON); } void CAnnDemoView::OnToolpolyline() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_POLYLINE); } void CAnnDemoView::OnToolrect() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_RECT); } void CAnnDemoView::OnToolredact() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_REDACT); } void CAnnDemoView::OnToolruler() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_RULER); } void CAnnDemoView::OnToolselect() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_SELECT); } void CAnnDemoView::OnToolstamp() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP); } void CAnnDemoView::OnTooltext() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_TEXT); } void CAnnDemoView::OnUserdesign() { // TODO: Add your command handler code here m_LAnnoWnd.GetContainerObject().SetUserMode(ANNUSER_DESIGN); if (!m_LAnnoWnd.GetToolBar().IsCreated()) { m_LAnnoWnd.GetToolBar().Create(AfxGetMainWnd()->m_hWnd, NULL, ANNTOOLALIGN_RIGHT | ANNTOOLALIGN_TOP, TRUE); m_bShowToolbar = TRUE; } m_LAnnoWnd.ToolChecked(ANNTOOL_SELECT); AfxGetMainWnd()->GetMenu()->GetSubMenu(1)->EnableMenuItem(1,MF_ENABLED|MF_BYPOSITION); } void CAnnDemoView::OnUpdateUserdesign(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->SetCheck(m_LAnnoWnd.GetContainerObject().GetUserMode()==ANNUSER_DESIGN); } void CAnnDemoView::OnUserrun() { // TODO: Add your command handler code here m_LAnnoWnd.GetContainerObject().SetUserMode(ANNUSER_RUN); if (m_LAnnoWnd.GetToolBar().IsCreated()) { m_LAnnoWnd.GetToolBar().Destroy(); } AfxGetMainWnd()->GetMenu()->GetSubMenu(1)->EnableMenuItem(1,MF_GRAYED|MF_BYPOSITION); } void CAnnDemoView::OnUpdateUserrun(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->SetCheck(m_LAnnoWnd.GetContainerObject().GetUserMode()==ANNUSER_RUN); } void CAnnDemoView::OnShowlock() { // TODO: Add your command handler code here m_LAnnoWnd.ShowLocked(!m_LAnnoWnd.IsLockedVisible()); } void CAnnDemoView::OnUpdateShowlock(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->SetCheck(m_LAnnoWnd.IsLockedVisible()); } void CAnnDemoView::OnUnlock() { // TODO: Add your command handler code here CPasswordDlg PassDlg; if (PassDlg.DoModal()==IDOK) { m_LAnnoWnd.GetContainerObject().Unlock((LPTSTR)(LPCTSTR)PassDlg.m_Password,ANNFLAG_RECURSE); } } void CAnnDemoView::OnLock() { // TODO: Add your command handler code here CPasswordDlg PassDlg; if (PassDlg.DoModal()==IDOK) { m_LAnnoWnd.GetContainerObject().Lock((LPTSTR)(LPCTSTR)PassDlg.m_Password,ANNFLAG_SELECTED|ANNFLAG_RECURSE); } } void CAnnDemoView::OnUpdateLock(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->Enable(m_LAnnoWnd.GetContainerObject().GetSelectCount()); } void CAnnDemoView::OnUnrealize() { // TODO: Add your command handler code here m_LAnnoWnd.Unrealize(); } void CAnnDemoView::OnRealize() { // TODO: Add your command handler code here m_LAnnoWnd.Realize(); } void CAnnDemoView::OnFileSaveAs() { // TODO: Add your command handler code here TCHAR szFileName[260]; TCHAR szAnnFile[260]; BOOL bWangMode = ((CMainFrame*)AfxGetMainWnd())->m_bWangMode ; SAVEDLGPARAMS SaveParms ; OPENFILENAME OpenFileName ; memset ( &SaveParms, 0, sizeof ( SAVEDLGPARAMS ) ) ; memset ( &OpenFileName, 0, sizeof ( OPENFILENAME ) ) ; OpenFileName.lStructSize = sizeof ( OPENFILENAME ) ; OpenFileName.lpstrInitialDir = NULL; OpenFileName.lpstrTitle = _T("Save a File"); OpenFileName.nFilterIndex = 0 ; SaveParms.uStructSize = sizeof ( SAVEDLGPARAMS) ; SaveParms.nQFactor = 2 ; SaveParms.nPageNumber = 1 ; SaveParms.nStampBits = 24; SaveParms.nStampWidth = 120; SaveParms.nStampHeight = 120; SaveParms.nBitsPerPixel = 24; SaveParms.nFormat = FILE_BMP; SaveParms.uSaveMulti = MULTIPAGE_OPERATION_REPLACE ; SaveParms.uDlgFlags = DLG_SAVE_SHOW_FILEOPTIONS_PROGRESSIVE | DLG_SAVE_SHOW_FILEOPTIONS_MULTIPAGE | DLG_SAVE_SHOW_FILEOPTIONS_STAMP | DLG_SAVE_SHOW_FILEOPTIONS_QFACTOR | DLG_SAVE_SHOW_FILEOPTIONS_J2KOPTIONS | DLG_SAVE_SHOW_FILEOPTIONS_BASICJ2KOPTIONS ; m_LAnnoWnd.DialogFile()->SetSaveParams(&SaveParms); m_LAnnoWnd.DialogFile()->SetOpenFileName(&OpenFileName); m_LAnnoWnd.DialogFile()->EnableAutoProcess(TRUE); m_LAnnoWnd.DialogFile()->SetFileName((LPTSTR)(LPCTSTR)GetDocument()->GetPathName()) ; L_INT nRetCode = m_LAnnoWnd.DialogFile()->DoModalSave(m_hWnd); if (nRetCode == SUCCESS_DLG_OK) { HCURSOR hCursor; int nRet; SAVEFILEOPTION SaveFileOption; m_LAnnoWnd.DialogFile()->GetFileName(szFileName, sizeof(szFileName)); hCursor = SetCursor (LoadCursor (NULL, IDC_WAIT)); /********************************************/ LBaseFile::GetDefaultSaveFileOption(&SaveFileOption,sizeof(SaveFileOption)); m_LAnnoWnd.DialogFile()->GetSaveParams(&SaveParms, sizeof(SaveParms)); switch(SaveParms.uSaveMulti) { case MULTIPAGE_OPERATION_OVERWRITE: SaveFileOption.PageNumber = 1; //SaveFileOption.Flags |= ESO_REPLACEPAGE; break; case MULTIPAGE_OPERATION_APPEND: //Do nothing //pSaveFileOption->PageNumber = 2; break; case MULTIPAGE_OPERATION_REPLACE: SaveFileOption.PageNumber = SaveParms.nPageNumber; SaveFileOption.Flags |= ESO_REPLACEPAGE; break; case MULTIPAGE_OPERATION_INSERT: SaveFileOption.PageNumber = SaveParms.nPageNumber; SaveFileOption.Flags |= ESO_INSERTPAGE; break; } /*********************************************/ m_LAnnoWnd.GetAnnFile(szAnnFile, szFileName, 1, SaveParms.nFormat); if(!lstrcmp(szAnnFile, szFileName)) /* same file, save as Wang annotation */ { nRet = m_LAnnoWnd.GetContainerObject().SaveTag((bWangMode ? ANNFMT_WANGTAG : ANNFMT_TIFFTAG)); if(nRet != SUCCESS) { if(MessageBox(_T("Error creating annotation data.\n") _T("The file will be saved without annotations.\n\n") _T("Do you still want to continue?"), _T("Annotation Error"), MB_ICONSTOP | MB_YESNO) != IDYES) { SetCursor(hCursor); return; } } } nRet = m_LAnnoWnd.Save( szFileName, SaveParms.nFormat, SaveParms.nBitsPerPixel, SaveParms.nQFactor, SaveParms.uSaveMulti, &SaveFileOption); if(nRet == SUCCESS) { if(lstrcmp(szAnnFile, szFileName)) /* different file, save as Lead annotation */ nRet = m_LAnnoWnd.AnnSave (szAnnFile,ANNFMT_XML, FALSE); } SetCursor (hCursor); } } LONG CAnnDemoView::OnHandlePalette(UINT wParam, LONG lParam) { if(lParam==TRUE) { m_LAnnoWnd.HandlePalette(WM_PALETTECHANGED,wParam,0); m_LAnnoWnd.Repaint(); } else { m_LAnnoWnd.HandlePalette(WM_QUERYNEWPALETTE,0,0); m_LAnnoWnd.Repaint(); } return TRUE; } void CAnnDemoView::OnViewPanwnd() { if(!m_LAnnoWnd.IsPanWndCreated()) { m_LAnnoWnd.CreatePanWnd(DISPLAYMODE_SCALETOGRAY|DISPLAYMODE_FIXEDPALETTE,0,0,150,150,_T("PAN_WIN"),NULL,NULL,TRUE); m_LAnnoWnd.UpdatePanWnd(0,RGB(0,0,255),_T("Pan Window")); } else m_LAnnoWnd.DestroyPanWnd(); } void CAnnDemoView::OnEditCopy() { // TODO: Add your command handler code here m_LAnnoWnd.CopyToClipboard(m_hWnd); } void CAnnDemoView::OnViewCenterimage() { // TODO: Add your command handler code here m_LAnnoWnd.EnableCenterOnZoom(!m_LAnnoWnd.IsCenterOnZoomEnabled()); } void CAnnDemoView::OnUpdateViewCenterimage(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->SetCheck(m_LAnnoWnd.IsCenterOnZoomEnabled()); } /////////////////////////////////////////////////////////////////////////////// // // // // // // // Drop File // // // // // // // /////////////////////////////////////////////////////////////////////////////// void CAnnDemoView::OnDropFiles(HDROP hDropInfo) { L_TCHAR zsFileName[255]; L_TCHAR zsName[50]; L_TCHAR zsExt[5]; memset(zsFileName,0,sizeof(zsFileName)); memset(zsName,0,sizeof(zsName)); memset(zsExt,0,sizeof(zsExt)); L_UINT uSize = sizeof(zsFileName); m_LAnnoWnd.GetFileName(zsFileName,&uSize); _tsplitpath(zsFileName,NULL,NULL,zsName,zsExt); lstrcat(zsName,zsExt); GetDocument()->SetTitle(zsName); CView::OnDropFiles(hDropInfo); } void CAnnDemoView::OnUpdateViewPanwnd(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->SetCheck(m_LAnnoWnd.IsPanWndCreated()); } void CAnnDemoView::OnToolStampApproved() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_APPROVED); } void CAnnDemoView::OnToolpoint() { m_LAnnoWnd.ToolChecked(ANNTOOL_POINT); } void CAnnDemoView::OnToolfreehandhotspot() { m_LAnnoWnd.ToolChecked(ANNTOOL_FREEHANDHOTSPOT); } void CAnnDemoView::OnToolcrossproduct() { m_LAnnoWnd.ToolChecked(ANNTOOL_CROSSPRODUCT); } void CAnnDemoView::OnToolprotractor() { m_LAnnoWnd.ToolChecked(ANNTOOL_PROTRACTOR); } void CAnnDemoView::OnToolpushpin() { m_LAnnoWnd.ToolChecked(ANNTOOL_PUSHPIN); } void CAnnDemoView::OnToolvideo() { m_LAnnoWnd.ToolChecked(ANNTOOL_VIDEO); } void CAnnDemoView::OnToolStampAssigned() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_ASSIGNED); } void CAnnDemoView::OnToolStampChecked() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_CHECKED); } void CAnnDemoView::OnToolStampClatprv() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_CLATPRV); } void CAnnDemoView::OnToolStampCopy() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_COPY); } void CAnnDemoView::OnToolStampDraft() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_DRAFT); } void CAnnDemoView::OnToolStampExtended() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_EXTENDED); } void CAnnDemoView::OnToolStampFax() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_FAX); } void CAnnDemoView::OnToolStampFaxed() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_FAXED); } void CAnnDemoView::OnToolStampImportant() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_IMPORTANT); } void CAnnDemoView::OnToolStampInvoice() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_INVOICE); } void CAnnDemoView::OnToolStampNotice() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_NOTICE); } void CAnnDemoView::OnToolStampOfficial() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_OFFICIAL); } void CAnnDemoView::OnToolStampOnfile() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_ONFILE); } void CAnnDemoView::OnToolStampPaid() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_PAID); } void CAnnDemoView::OnToolStampPassed() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_PASSED); } void CAnnDemoView::OnToolStampPending() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_PENDING); } void CAnnDemoView::OnToolStampProcessed() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_PROCESSED); } void CAnnDemoView::OnToolStampReceived() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_RECEIVED); } void CAnnDemoView::OnToolStampRejected() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_REJECTED); } void CAnnDemoView::OnToolStampRelease() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_RELEASE); } void CAnnDemoView::OnToolStampSent() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_SENT); } void CAnnDemoView::OnToolStampShipped() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_SHIPPED); } void CAnnDemoView::OnToolStampTopsecret() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_TOPSECRET); } void CAnnDemoView::OnToolStampUrgent() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_URGENT); } void CAnnDemoView::OnToolStampVoid() { m_LAnnoWnd.ToolChecked(ANNTOOL_STAMP_VOID); } void CAnnDemoView::OnViewDoublebuffer() { m_bDoubleBufferEnabled = !m_bDoubleBufferEnabled; m_LAnnoWnd.EnableDoubleBuffer(m_bDoubleBufferEnabled); } void CAnnDemoView::OnUpdateViewDoublebuffer(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_bDoubleBufferEnabled); } void CAnnDemoView::OnEditToolCurve() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_CURVE); } void CAnnDemoView::OnEditToolClosedcurve() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_CURVECLOSED); } void CAnnDemoView::OnEditToolRechtext() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_RTF); } void CAnnDemoView::OnEditToolTextpointer() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_TEXTPOINTER); } void CAnnDemoView::OnEditToolPolyruler() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_POLYRULER); } void CAnnDemoView::OnEditToolEncrypt() { // TODO: Add your command handler code here m_LAnnoWnd.ToolChecked(ANNTOOL_ENCRYPT); } void CAnnDemoView::OnUpdateEditToolCurve(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here m_LAnnoWnd.ToolChecked(m_LAnnoWnd.GetToolBar().GetToolChecked()); pCmdUI->SetCheck(pCmdUI->m_nID==m_LAnnoWnd.GetCurrentObjectID()); } void CAnnDemoView::OnUpdateEditToolClosedcurve(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here m_LAnnoWnd.ToolChecked(m_LAnnoWnd.GetToolBar().GetToolChecked()); pCmdUI->SetCheck(pCmdUI->m_nID==m_LAnnoWnd.GetCurrentObjectID()); } void CAnnDemoView::OnUpdateEditToolRechtext(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here m_LAnnoWnd.ToolChecked(m_LAnnoWnd.GetToolBar().GetToolChecked()); pCmdUI->SetCheck(pCmdUI->m_nID==m_LAnnoWnd.GetCurrentObjectID()); } void CAnnDemoView::OnUpdateEditToolTextpointer(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here m_LAnnoWnd.ToolChecked(m_LAnnoWnd.GetToolBar().GetToolChecked()); pCmdUI->SetCheck(pCmdUI->m_nID==m_LAnnoWnd.GetCurrentObjectID()); } void CAnnDemoView::OnUpdateEditToolPolyruler(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here m_LAnnoWnd.ToolChecked(m_LAnnoWnd.GetToolBar().GetToolChecked()); pCmdUI->SetCheck(pCmdUI->m_nID==m_LAnnoWnd.GetCurrentObjectID()); } void CAnnDemoView::OnUpdateEditToolEncrypt(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here m_LAnnoWnd.ToolChecked(m_LAnnoWnd.GetToolBar().GetToolChecked()); pCmdUI->SetCheck(pCmdUI->m_nID==m_LAnnoWnd.GetCurrentObjectID()); } void CAnnDemoView::OnApplydecryptors() { m_LAnnoWnd.GetContainerObject().EncryptApply(ANNENCRYPTAPPLY_DECRYPTOR, ANNFLAG_RECURSE); } void CAnnDemoView::OnApplyencryptors() { m_LAnnoWnd.GetContainerObject().EncryptApply(ANNENCRYPTAPPLY_ENCRYPTOR, ANNFLAG_RECURSE); } void CAnnDemoView::OnViewChangeHilightAndCursors() { m_bAnnHilightCustom = !m_bAnnHilightCustom; m_LAnnoWnd.GetAutomationObject().SetAutoHilightPen(m_bAnnHilightCustom ? RGB(0xC0, 0xC0, 0xC0) : RGB(0xFF, 0xFF, 0xFF)); m_LAnnoWnd.GetAutomationObject().SetAutoCursor(ANNAUTOCURSOR_DRAWNEW, m_bAnnHilightCustom ? m_hCursorAnnDrawNew : m_hCursorDefaultAnnDrawNew); m_LAnnoWnd.GetAutomationObject().SetAutoCursor(ANNAUTOCURSOR_HANDLE, m_bAnnHilightCustom ? m_hCursorAnnHandle : m_hCursorDefaultAnnHandle); m_LAnnoWnd.GetAutomationObject().SetAutoCursor(ANNAUTOCURSOR_MOVE, m_bAnnHilightCustom ? m_hCursorAnnMove : m_hCursorDefaultAnnMove); m_LAnnoWnd.GetAutomationObject().SetAutoCursor(ANNAUTOCURSOR_SELECT, m_bAnnHilightCustom ? m_hCursorAnnSelect : m_hCursorDefaultAnnSelect); } void CAnnDemoView::OnUpdateViewChangehilightandcursors(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_bAnnHilightCustom); } void CAnnDemoView::OnNewOptions(UINT nID) { L_BOOL bToolbar = FALSE; L_UINT uOneOption = 0; HWND hwndChild = NULL; L_UINT uOptions = 0; L_UINT32 uNewOptions = 0; L_ANNGETOPTIONS(&uOptions); switch(nID) { case IDM_NEW_CHECKALL: uOptions = 0; uOneOption = OPTIONS_NEW_ALL; bToolbar = TRUE; break; case IDM_NEW_UNCHECKALL: uOptions = 0; uOneOption = 0; bToolbar = TRUE; break; case IDM_NEW_TOOLBAR: uOneOption = OPTIONS_NEW_TOOLBAR; bToolbar = TRUE; break; case IDM_NEW_METAFILES: uOneOption = OPTIONS_NEW_STAMP_METAFILES; break; case IDM_NEW_ALPHA: uOneOption = OPTIONS_NEW_ALPHA; break; case IDM_NEW_ROTATE: uOneOption = OPTIONS_NEW_ROTATE; break; case IDM_NEW_SIDE_HANDLES: uOneOption = OPTIONS_NEW_SIDE_HANDLES; break; case IDM_NEW_MULTI_SELECT: uOneOption = OPTIONS_NEW_MULTI_SELECT; break; case IDM_NEW_CURSORS: uOneOption = OPTIONS_NEW_CURSORS; break; case IDM_NEW_ESC_CANCEL: uOneOption = OPTIONS_NEW_ESC_CANCEL; break; case IDM_NEW_CALIBRATE_RULER: uOneOption = OPTIONS_NEW_CALIBRATE_RULER; break; case IDM_NEW_DOT_DASH_LINES: uOneOption = OPTIONS_NEW_DOT_DASH_LINES; break; case IDM_NEW_TEXT_OPTIONS: uOneOption = OPTIONS_NEW_TEXT_OPTIONS; break; } if (uOptions & uOneOption) uNewOptions = uOptions & ~uOneOption; else uNewOptions = uOptions | uOneOption; L_ANNSETOPTIONS(NULL, uNewOptions); if (bToolbar) { // destroy the old toolbar, and recreate if (m_LAnnoWnd.GetToolBar().IsCreated()) m_LAnnoWnd.GetToolBar().Destroy(); m_LAnnoWnd.GetToolBar().Create(AfxGetMainWnd()->m_hWnd, NULL, ANNTOOLALIGN_RIGHT | ANNTOOLALIGN_TOP, TRUE); AfxGetMainWnd()->SetActiveWindow(); } // Update all other annotation windows POSITION posTemplate = AfxGetApp()->GetFirstDocTemplatePosition(); while(posTemplate != NULL) { CDocTemplate *pTemplate = AfxGetApp()->GetNextDocTemplate(posTemplate); ASSERT(pTemplate->IsKindOf(RUNTIME_CLASS(CDocTemplate))); POSITION posDoc = pTemplate->GetFirstDocPosition(); while(posDoc != NULL) { CAnnDemoDoc* pDoc = (CAnnDemoDoc*)pTemplate->GetNextDoc(posDoc); { POSITION pos = pDoc->GetFirstViewPosition(); while (pos != NULL) { CAnnDemoView* pView = (CAnnDemoView*)pDoc->GetNextView(pos); if (pView) L_ANNSETOPTIONS(pView->m_LAnnoWnd.GetAutomationObject().GetHandle(), uNewOptions); } } } } } void CAnnDemoView::OnUpdateNewOptions(CCmdUI* pCmdUI) { L_UINT uOptions = 0; L_ANNGETOPTIONS(&uOptions); HMENU hMenu = pCmdUI->m_pMenu->GetSafeHmenu(); CheckMenuItem(hMenu, IDM_NEW_TOOLBAR, (uOptions & OPTIONS_NEW_TOOLBAR) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_METAFILES, (uOptions & OPTIONS_NEW_STAMP_METAFILES) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_ALPHA, (uOptions & OPTIONS_NEW_ALPHA) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_ROTATE, (uOptions & OPTIONS_NEW_ROTATE) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_SIDE_HANDLES, (uOptions & OPTIONS_NEW_SIDE_HANDLES) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_MULTI_SELECT, (uOptions & OPTIONS_NEW_MULTI_SELECT) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_CURSORS, (uOptions & OPTIONS_NEW_CURSORS) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_ESC_CANCEL, (uOptions & OPTIONS_NEW_ESC_CANCEL) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_CALIBRATE_RULER, (uOptions & OPTIONS_NEW_CALIBRATE_RULER) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_DOT_DASH_LINES, (uOptions & OPTIONS_NEW_DOT_DASH_LINES) ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(hMenu, IDM_NEW_TEXT_OPTIONS, (uOptions & OPTIONS_NEW_TEXT_OPTIONS) ? MF_CHECKED : MF_UNCHECKED); }