void CCodeHighLightView::OnDestroy() { // 停用处于析构中的项;这在 // 使用拆分器视图时非常重要 COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this); if (pActiveItem != NULL && pActiveItem->GetActiveView() == this) { pActiveItem->Deactivate(); ASSERT(GetDocument()->GetInPlaceActiveItem(this) == NULL); } CSynEditView::OnDestroy(); }
void CTinyCADView::OnDestroy() { // 析构时停用此项;这在 // 使用拆分视图时非常重要 COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this); if (pActiveItem != NULL && pActiveItem->GetActiveView() == this) { pActiveItem->Deactivate(); ASSERT(GetDocument()->GetInPlaceActiveItem(this) == NULL); } CTinyCADZoomView::OnDestroy(); }
void CABMOfficeSystemcppView::OnDestroy() { // Deactivate the item on destruction; this is important // when a splitter view is being used COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this); if (pActiveItem != NULL && pActiveItem->GetActiveView() == this) { pActiveItem->Deactivate(); ASSERT(GetDocument()->GetInPlaceActiveItem(this) == NULL); } CView::OnDestroy(); }
void CRibbonSampleCntrItem::OnActivate() { // allow only one inplace active item per frame CView* pView = GetActiveView(); ASSERT_VALID(pView); COleClientItem* pItem = GetDocument()->GetInPlaceActiveItem(pView); if (pItem != NULL && pItem != this) pItem->Close(); ActiveStateChanged(TRUE); COleClientItem::OnActivate(); }
void CRectItem::OnActivate() { // allow only one inplace active item per frame CMainView* pView = GetActiveView(); ASSERT_VALID(pView); COleClientItem* pItem = GetDocument()->GetInPlaceActiveItem(pView); if (pItem != NULL && pItem != this) pItem->Close(); COleClientItem::OnActivate(); // set selection to an item when it becomes active pView->SetSelection(this); }
void COleDocument::CommitItems(BOOL bSuccess) { // special 'Commit' phase for COleClientItem items POSITION pos = GetStartPosition(); COleClientItem* pItem; while ((pItem = GetNextClientItem(pos)) != NULL) { // calling CommitItem with FALSE causes the object to revert // to the original storage. Calling CommitItem TRUE causes // the item to adopt the new storage created in the Serialize // function. pItem->CommitItem(bSuccess); } }
STDMETHODIMP COlePropertiesDialog::XOleUIObjInfo::ConvertObject( DWORD dwObject, REFCLSID clsidNew) { COleClientItem* pItem = (COleClientItem*)dwObject; ASSERT_VALID(pItem); if (!pItem->ConvertTo(clsidNew)) { AfxMessageBox(AFX_IDP_FAILED_TO_CONVERT, MB_OK | MB_ICONEXCLAMATION); return E_FAIL; } return S_OK; }
void COleDocument::OnUpdateEditLinksMenu(CCmdUI* pCmdUI) { POSITION pos = GetStartPosition(); COleClientItem* pItem; while ((pItem = GetNextClientItem(pos)) != NULL) { if (pItem->GetType() == OT_LINK) { // we found a link! pCmdUI->Enable(TRUE); return; } } pCmdUI->Enable(FALSE); // no links today }
void COleDocument::UpdateModifiedFlag() { ASSERT_VALID(this); POSITION pos = GetStartPosition(); COleClientItem* pItem; while ((pItem = GetNextClientItem(pos)) != NULL) { if (pItem->IsModified()) { SetModifiedFlag(); break; } } }
void CDrawTool::OnLButtonDown(CDrawView* pView, UINT nFlags, const CPoint& point) { // deactivate any in-place active item on this view! COleClientItem* pActiveItem = pView->GetDocument()->GetInPlaceActiveItem(pView); if (pActiveItem != NULL) { pActiveItem->Close(); ASSERT(pView->GetDocument()->GetInPlaceActiveItem(pView) == NULL); } pView->SetCapture(); c_nDownFlags = nFlags; c_down = point; c_last = point; }
STDMETHODIMP CRichToolTipCtrl::XRichEditOleCallback::GetNewStorage(LPSTORAGE* ppstg) { // Create a flat storage and steal it from the client item // the client item is only used for creating the storage COleClientItem item; item.GetItemStorageFlat(); *ppstg = item.m_lpStorage; HRESULT hRes = E_OUTOFMEMORY; if (item.m_lpStorage != NULL) { item.m_lpStorage = NULL; hRes = S_OK; } return hRes; }
void COleDocument::PreCloseFrame(CFrameWnd* pFrameArg) { ASSERT_VALID(this); ASSERT_VALID(pFrameArg); // deactivate any inplace active items on this frame COleClientItem* pItem = GetInPlaceActiveItem(pFrameArg); if (pItem != NULL) { pItem->Deactivate(); pItem->Close(OLECLOSE_NOSAVE); } // should not have any inplace active items ASSERT(GetInPlaceActiveItem(pFrameArg) == NULL); }
// 在就地编辑一个对象时,容器需要对 OnSetFocus 和 OnSize // 进行特殊处理 void CClientView::OnSetFocus(CWnd* pOldWnd) { COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this); if (pActiveItem != NULL && pActiveItem->GetItemState() == COleClientItem::activeUIState) { // 如果该项处于同一视图中,则需要将焦点设置到该项 CWnd* pWnd = pActiveItem->GetInPlaceWindow(); if (pWnd != NULL) { pWnd->SetFocus(); // 不要调用基类 return; } } CView::OnSetFocus(pOldWnd); }
// Special handling of OnSetFocus and OnSize are required for a container // when an object is being edited in-place. void CMy1553View::OnSetFocus(CWnd* pOldWnd) { COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this); if (pActiveItem != NULL && pActiveItem->GetItemState() == COleClientItem::activeUIState) { // need to set focus to this item if it is in the same view CWnd* pWnd = pActiveItem->GetInPlaceWindow(); if (pWnd != NULL) { pWnd->SetFocus(); // don't call the base class return; } } CView::OnSetFocus(pOldWnd); }
void COleDocument::DeleteContents() { // deletes all COleClientItem objects in the doc item list // (Note: doesn't touch server items or other docitems) POSITION pos = GetStartPosition(); COleClientItem* pItem; while ((pItem = GetNextClientItem(pos)) != NULL) { if (pItem->m_lpObject != NULL) { pItem->Release(OLECLOSE_NOSAVE); // release OLE object RemoveItem(pItem); // disconnect from document pItem->InternalRelease(); // may 'delete pItem' } } }
STDMETHODIMP COlePropertiesDialog::XOleUIObjInfo::GetViewInfo( DWORD dwObject, HGLOBAL* phMetaPict, DWORD* pdvAspect, int* pnCurrentScale) { COleClientItem* pItem = (COleClientItem*)dwObject; ASSERT_VALID(pItem); if (phMetaPict != NULL) *phMetaPict = pItem->GetIconicMetafile(); if (pdvAspect != NULL) *pdvAspect = pItem->GetDrawAspect(); if (pnCurrentScale != NULL) *pnCurrentScale = 100; // 100% (arbitrary for now) return S_OK; }
void CDrawTool::ourDrawRelation(CDrawView* pView, const CPoint& entryPoint,const CPoint& point, const CString &Name) { COleClientItem* pActiveItem = pView->GetDocument()->GetInPlaceActiveItem(pView); if (pActiveItem != NULL) { pActiveItem->Close(); ASSERT(pView->GetDocument()->GetInPlaceActiveItem(pView) == NULL); } CPoint local; local.SetPoint(point.x,point.y); CDrawRect* pObj = new CDrawRect(CRect(entryPoint, local),Name); pObj->m_nShape = CDrawRect::line; pView->GetDocument()->Add(pObj); pView->Select(pObj); pView->OnObjectMoveToBack(); CDrawTool::c_drawShape = selection; }
void CGenEdView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); if(m_pDocument) { CGenEdDoc* pDoc = GetDocument(); if(pDoc) { COleClientItem* pActiveItem = pDoc->GetInPlaceActiveItem(this); if (pActiveItem != NULL && pActiveItem == m_pServer) pActiveItem->SetItemRects(); else if (m_pServer != NULL) { m_pServer->SetClientExtent (CSize (cx, cy)); } } } }
STDMETHODIMP COleUILinkInfo::OpenLinkSource(DWORD dwLink) { COleClientItem* pItem = (COleClientItem*)dwLink; ASSERT_VALID(pItem); ASSERT_KINDOF(COleClientItem, pItem); ASSERT(pItem->GetType() == OT_LINK); SCODE sc; TRY { // Note: no need for valid CView* since links don't activate inplace pItem->DoVerb(OLEIVERB_SHOW, NULL); sc = S_OK; } CATCH_ALL(e) { sc = COleException::Process(e); DELETE_EXCEPTION(e); } END_CATCH_ALL return sc; }
STDMETHODIMP COleUILinkInfo::SetLinkUpdateOptions( DWORD dwLink, DWORD dwUpdateOpt) { COleClientItem* pItem = (COleClientItem*)dwLink; ASSERT_VALID(pItem); ASSERT_KINDOF(COleClientItem, pItem); ASSERT(pItem->GetType() == OT_LINK); SCODE sc; TRY { // item is a link -- get its link options pItem->SetLinkUpdateOptions((OLEUPDATE)dwUpdateOpt); sc = S_OK; } CATCH_ALL(e) { sc = COleException::Process(e); DELETE_EXCEPTION(e); } END_CATCH_ALL return sc; }
BOOL COleDocument::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { ASSERT_VALID(this); if (nCode == CN_COMMAND && nID >= ID_OLE_VERB_FIRST && nID <= ID_OLE_VERB_LAST) { COleClientItem* pSel = GetPrimarySelectedItem(GetRoutingView()); if (pSel != NULL) { if (pHandlerInfo != NULL) // routing test { pHandlerInfo->pTarget = this; return TRUE; // would be handled here } // activate the current selection with the appropriate verb CWaitCursor wait; pSel->DoVerb(nID - ID_OLE_VERB_FIRST, GetRoutingView()); return TRUE; // handled } } return CDocument::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); }
void COleDocument::CommitItems(BOOL bSuccess, LPSTORAGE pNewStorage) { // special 'Commit' phase for COleClientItem items POSITION pos = GetStartPosition(); COleClientItem* pItem; while ((pItem = GetNextClientItem(pos)) != NULL) { // Set m_lpNewStorage so we can pass it to IPersistStorage::SaveCompleted // in COleClientItem::CommitItem. m_bNeedCommit was set in // HandsOffStorage. if (pItem->m_bNeedCommit && pNewStorage) { if (pItem->m_lpNewStorage) pItem->m_lpNewStorage->Release(); pNewStorage->AddRef(); pItem->m_lpNewStorage = pNewStorage; } // calling CommitItem with FALSE causes the object to revert // to the original storage. Calling CommitItem TRUE causes // the item to adopt the new storage created in the Serialize // function. pItem->CommitItem(bSuccess); } }
//*************************************************************************************** void CBCGPFrameWnd::OnClose() { if (m_pPrintPreviewFrame != NULL) { m_pPrintPreviewFrame->SendMessage (WM_COMMAND, AFX_ID_PREVIEW_CLOSE); m_pPrintPreviewFrame = NULL; return; } if (!m_Impl.IsPrintPreview ()) { m_bClosing = TRUE; } // Deactivate OLE container first: COleClientItem* pActiveItem = GetInPlaceActiveItem (); if (pActiveItem != NULL) { pActiveItem->Deactivate (); } m_Impl.OnCloseFrame(); CFrameWnd::OnClose(); }
STDMETHODIMP COlePropertiesDialog::XOleUIObjInfo::SetViewInfo( DWORD dwObject, HGLOBAL hMetaPict, DWORD dvAspect, int nCurrentScale, BOOL bRelativeToOrig) { METHOD_PROLOGUE_EX_(COlePropertiesDialog, OleUIObjInfo) COleClientItem* pItem = (COleClientItem*)dwObject; ASSERT_VALID(pItem); // handle aspect changes if (dvAspect != -1) { pItem->OnChange(OLE_CHANGED_ASPECT, dvAspect); pItem->SetDrawAspect((DVASPECT)dvAspect); // force scale to 100% when changing aspects if (dvAspect == DVASPECT_ICON) { nCurrentScale = 100; bRelativeToOrig = TRUE; } else if (nCurrentScale == -1) { nCurrentScale = 100; bRelativeToOrig = FALSE; } } // handle icon representation changes if (hMetaPict != NULL) { pItem->SetIconicMetafile(hMetaPict); if (pItem->GetDrawAspect() == DVASPECT_ICON) pItem->OnChange(OLE_CHANGED, (DWORD)DVASPECT_ICON); } // handle scale changes if (nCurrentScale != -1) { pThis->OnApplyScale(pItem, nCurrentScale, bRelativeToOrig); } return S_OK; }
//************************************************************************************* void CBCGPFrameWnd::RecalcLayout (BOOL bNotify) { if (m_bInRecalcLayout) return; m_bInRecalcLayout = TRUE; BOOL bWasOleInPlaceActive = m_Impl.m_bIsOleInPlaceActive; m_Impl.m_bIsOleInPlaceActive = FALSE; COleClientItem* pActiveItem = GetInPlaceActiveItem (); if (pActiveItem != NULL && pActiveItem->m_pInPlaceFrame != NULL && pActiveItem->GetItemState () == COleClientItem::activeUIState) { m_Impl.m_bIsOleInPlaceActive = TRUE; m_Impl.m_bHadCaption = (GetStyle () & WS_CAPTION) != 0; } if (!m_bIsMinimized) { CView* pView = GetActiveView (); if (m_dockManager.IsPrintPreviewValid () || m_pNotifyHook != NULL) { if (pView != NULL && pView->IsKindOf (RUNTIME_CLASS (CBCGPPrintPreviewView))) { m_dockManager.RecalcLayout (bNotify); CRect rectClient = m_dockManager.GetClientAreaBounds (); pView->SetWindowPos (NULL, rectClient.left, rectClient.top, rectClient.Width (), rectClient.Height (), SWP_NOZORDER | SWP_NOACTIVATE); } else { if (bNotify && m_pNotifyHook != NULL) { ActiveItemRecalcLayout (); } else { m_bInRecalcLayout = FALSE; CFrameWnd::RecalcLayout (bNotify); AdjustClientArea (); } } } else { m_dockManager.RecalcLayout (bNotify); AdjustClientArea (); } } m_bInRecalcLayout = FALSE; if (bWasOleInPlaceActive != m_Impl.m_bIsOleInPlaceActive) { if (!m_Impl.m_bHadCaption) { if (m_Impl.m_bIsOleInPlaceActive) { ModifyStyle (0, WS_CAPTION); } else { ModifyStyle (WS_CAPTION, 0); } } m_Impl.OnChangeVisualManager (); SetWindowPos (NULL, -1, -1, -1, -1, SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_FRAMECHANGED); } }
STDMETHODIMP COleUILinkInfo::GetLinkSource( DWORD dwLink, LPTSTR* lplpszDisplayName, ULONG* lplenFileName, LPTSTR* lplpszFullLinkType, LPTSTR* lplpszShortLinkType, BOOL* lpfSourceAvailable, BOOL* lpfIsSelected) { COleClientItem* pItem = (COleClientItem*)dwLink; ASSERT_VALID(pItem); ASSERT_KINDOF(COleClientItem, pItem); ASSERT(pItem->GetType() == OT_LINK); // set OUT params to NULL ASSERT(lplpszDisplayName != NULL); *lplpszDisplayName = NULL; if (lplpszFullLinkType != NULL) *lplpszFullLinkType = NULL; if (lplpszShortLinkType != NULL) *lplpszShortLinkType = NULL; if (lplenFileName != NULL) *lplenFileName = 0; if (lpfSourceAvailable != NULL) *lpfSourceAvailable = !pItem->m_bLinkUnavail; // get IOleLink interface LPOLELINK lpOleLink = QUERYINTERFACE(pItem->m_lpObject, IOleLink); ASSERT(lpOleLink != NULL); // get moniker & object information LPMONIKER lpmk; if (lpOleLink->GetSourceMoniker(&lpmk) == S_OK) { if (lplenFileName != NULL) *lplenFileName = _AfxOleGetLenFilePrefixOfMoniker(lpmk); lpmk->Release(); } // attempt to get the type names of the link if (lplpszFullLinkType != NULL) { LPOLESTR lpOleStr = NULL; pItem->m_lpObject->GetUserType(USERCLASSTYPE_FULL, &lpOleStr); *lplpszFullLinkType = TASKSTRINGOLE2T(lpOleStr); if (*lplpszFullLinkType == NULL) { TCHAR szUnknown[256]; VERIFY(AfxLoadString(AFX_IDS_UNKNOWNTYPE, szUnknown) != 0); *lplpszFullLinkType = AfxAllocTaskString(szUnknown); } } if (lplpszShortLinkType != NULL) { LPOLESTR lpOleStr = NULL; pItem->m_lpObject->GetUserType(USERCLASSTYPE_SHORT, &lpOleStr); *lplpszShortLinkType = TASKSTRINGOLE2T(lpOleStr); if (*lplpszShortLinkType == NULL) { TCHAR szUnknown[256]; VERIFY(AfxLoadString(AFX_IDS_UNKNOWNTYPE, szUnknown) != 0); *lplpszShortLinkType = AfxAllocTaskString(szUnknown); } } // get source display name for moniker LPOLESTR lpOleStr = NULL; SCODE sc = lpOleLink->GetSourceDisplayName(&lpOleStr); *lplpszDisplayName = TASKSTRINGOLE2T(lpOleStr); lpOleLink->Release(); if (sc != S_OK) return sc; // see if item is selected if specified if (lpfIsSelected) { *lpfIsSelected = (m_pSelectedItem == pItem); } return S_OK; }
STDMETHODIMP COleUILinkInfo::SetLinkSource( DWORD dwLink, LPTSTR lpszDisplayName, ULONG lenFileName, ULONG* pchEaten, BOOL fValidateSource) { USES_CONVERSION; COleClientItem* pItem = (COleClientItem*)dwLink; ASSERT_VALID(pItem); ASSERT_KINDOF(COleClientItem, pItem); ASSERT(pItem->GetType() == OT_LINK); LPOLEOBJECT lpObject = NULL; CLSID clsid; // parse the portion known to be a file name into a file moniker TCHAR szName[_MAX_PATH]; lstrcpyn(szName, lpszDisplayName, (int)lenFileName + 1); LPMONIKER lpmk = NULL; SCODE sc = CreateFileMoniker(T2COLE(szName), &lpmk); if (lpmk == NULL) return sc; LPBC lpbc = NULL; if (fValidateSource) { sc = CreateBindCtx(0, &lpbc); if (sc != S_OK) { lpmk->Release(); return sc; } } // nUneaten is the number of chars left to parse UINT nUneaten = lstrlen(lpszDisplayName) - lenFileName; // lpszRemainder is the left over display name LPTSTR lpszRemainder = lpszDisplayName + lenFileName; *pchEaten = lenFileName; // parse the rest of the display name while (nUneaten > 0) { // attempt to parse next moniker ULONG nEaten = 0; LPMONIKER lpmkNext = NULL; sc = _AfxParseDisplayName(lpmk, lpbc, lpszRemainder, &nEaten, &lpmkNext); if (sc != S_OK) { lpmk->Release(); lpbc->Release(); return sc; } // advance through the display name nUneaten -= nEaten; *pchEaten += nEaten; lpszRemainder += nEaten; if (lpmkNext != NULL) { // create composite out of current and next LPMONIKER lpmkTemp = NULL; sc = CreateGenericComposite(lpmk, lpmkNext, &lpmkTemp); if (FAILED(sc)) { lpmk->Release(); lpmkNext->Release(); lpbc->Release(); return sc; } // make current = next lpmkNext->Release(); lpmk->Release(); lpmk = lpmkTemp; } } if (fValidateSource) { // attempt to bind the the object sc = lpmk->BindToObject(lpbc, NULL, IID_IOleObject, (LPLP)&lpObject); if (FAILED(sc)) { pItem->m_bLinkUnavail = TRUE; lpbc->Release(); lpmk->Release(); RELEASE(lpObject); return sc; } ASSERT(lpObject != NULL); // call GetUserClassID while bound so default handler updates lpObject->GetUserClassID(&clsid); pItem->m_bLinkUnavail = FALSE; } // get IOleLink interface LPOLELINK lpOleLink = QUERYINTERFACE(pItem->m_lpObject, IOleLink); ASSERT(lpOleLink != NULL); // set source from moniker sc = lpOleLink->SetSourceMoniker(lpmk, clsid); // update the cache if object was successfully bound if (lpObject != NULL) { lpObject->Update(); lpObject->Release(); } // cleanup lpOleLink->Release(); RELEASE(lpmk); RELEASE(lpbc); return sc; }
void CMainFrame::AdjustObjectSubmenu(CMFCPopupMenu* pMenuPopup) { ASSERT(pMenuPopup != NULL); if (pMenuPopup->GetParentPopupMenu() != NULL) { return; } // <snippet7> // CMFCPopupMenu* pMenuPopup CMFCPopupMenuBar* pMenuBar = pMenuPopup->GetMenuBar(); // </snippet7> ASSERT(pMenuBar != NULL); // <snippet10> // CMFCPopupMenuBar* pMenuBar CMFCCustomizeMenuButton* pBtn = (CMFCCustomizeMenuButton*)pMenuBar->GetButton(0); pBtn->EnableCustomization(true); pBtn->SetSeparator(); // </snippet10> int iIndex = pMenuBar->CommandToIndex(ID_OLE_VERB_FIRST); if (iIndex < 0) { return; } CFrameWnd* pFrame = GetActiveFrame(); if (pFrame == NULL) { return; } CDrawDoc* pDoc = (CDrawDoc*)pFrame->GetActiveDocument(); ASSERT_VALID(pDoc); // check for single selection COleClientItem* pItem = pDoc->GetPrimarySelectedItem(pFrame->GetActiveView()); if (pItem == NULL || pItem->GetType() == OT_STATIC) { // no selection, or is 'static' item return; } // only include Convert... if there is a handler for ID_OLE_EDIT_CONVERT UINT nConvertID = ID_OLE_EDIT_CONVERT; AFX_CMDHANDLERINFO info; if (!pDoc->OnCmdMsg(ID_OLE_EDIT_CONVERT, CN_COMMAND, NULL, &info)) nConvertID = 0; HMENU hMenu = pMenuBar->ExportToMenu(); ASSERT(hMenu != NULL); // update the menu AfxOleSetEditMenu(pItem, CMenu::FromHandle(hMenu), iIndex, ID_OLE_VERB_FIRST, ID_OLE_VERB_LAST, nConvertID); pMenuBar->ImportFromMenu(hMenu); ::DestroyMenu(hMenu); }
void ScreenCamView::OnSize( wxSizeEvent &event ) { // This is called early, so if pDocView is null do nothing if( NULL == pDocView ) return; SetCurrentStates(); Document* pCurDoc = Document::GetCurrent(); DocView* pCurView = DocView::GetCurrent(); // these lines are here to stop very strange things happening on exit under Win32s // when this fn gets called when it really shouldn't. I would like to really know // just what on earth os going on under Win32s but it iss something strange in message // handling as far as I can tell. wxSize size( event.GetSize() ); // Check for irrelevant or potty messages. if (size.x <= 0 || size.y <= 0) { // TRACEUSER( "JustinF", _T("Strange size msg in ScreenView::OnSize(0x%X, %d, %d)\n"), // nType, cx, cy); return; } // Handle OLE 2.0 in-place activation stuff. #if (_OLE_VER >= 0x200) if(GetDocument()) { COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this); if (pActiveItem) pActiveItem->SetItemRects(); } #endif if (Status->ScrollersVisible) { PORTNOTETRACE( "other", "ScreenCamView::OnSize - Removed scroller usage" ); #if !defined(EXCLUDE_FROM_XARALX) // Resize and reposition the proportional scrollers. wxRect hrect, vrect; HScrollBar->CalcPosFromParentClient(&hrect); UINT32 RulerWidth = OILRuler::GetWidth(); //if rulers are switched on the scroll bars are made // smaller to accomodate them if (Status->RulersVisible) hrect.left += RulerWidth; if (RULER_BORDERS) hrect.left-=2; HScrollBar->MoveWindow(&hrect, TRUE); VScrollBar->CalcPosFromParentClient(&vrect); if (Status->RulersVisible) vrect.top += RulerWidth; if (RULER_BORDERS) vrect.top-=2; VScrollBar->MoveWindow(&vrect, TRUE); // Reposition the corner window at the bottom-right. Corner->MoveWindow(vrect.left, hrect.top, vrect.Width(), hrect.Height()); // Resize/reposition the rendering window. CurrentSize.left = CurrentSize.top = 0; CurrentSize.right = cx - vrect.Width() + 1; CurrentSize.bottom = cy - hrect.Height() + 1; #endif } else { CurrentSize.x = CurrentSize.y = 0; CurrentSize.width = size.x; CurrentSize.height = size.y; } if (Status->RulersVisible) { PORTNOTETRACE( "other", "ScreenCamView::OnSize - Removed scroller / ruler usage" ); #if !defined(EXCLUDE_FROM_XARALX) wxRect hRect, vRect, oRect; HRuler->CalcPosFromParentClient(&hRect); HRuler->MoveWindow(&hRect, TRUE); HRuler->PositionLegend(); CurrentSize.top = 0 + hRect.Height() ; VRuler->CalcPosFromParentClient(&vRect); VRuler->MoveWindow(&vRect, TRUE); CurrentSize.left = 0 + vRect.Width(); OGadget->CalcPosFromParentClient(&oRect); OGadget->MoveWindow(&oRect, TRUE); if (RULER_BORDERS) { CurrentSize.top --; CurrentSize.left--; } #endif } PORTNOTE( "other", "ScreenCamView::OnSize - Removed RenderWindow usage -not sure if needed" ) #ifndef EXCLUDE_FROM_XARALX RenderWindow->MoveWindow(&CurrentSize, TRUE); #endif // Update the rest of the window placement information. UpdateViewPosition(); // Calculate the work area, page & line sizes etc etc. FIXED16 PixelWidth, PixelHeight; pDocView->GetPixelSize(&PixelWidth, &PixelHeight); PORTNOTE( "other", "ScreenCamView::OnSize - Removed scroller usage" ) #if !defined(EXCLUDE_FROM_XARALX) XLONG x1 = CurrentSize.GetWidth() * PixelWidth; XLONG x2 = CurrentSize.GetHeight() * PixelHeight; HScrollBar->SetPageSize(x1); VScrollBar->SetPageSize(x2); HScrollBar->SetLineSize(x1 / xlong(10) + xlong(1)); VScrollBar->SetLineSize(x2 / xlong(10) + xlong(1)); #endif SetWorkAreaExtent(Status->WorkAreaExtent, FALSE); // Make sure the scroll offsets are valid - if we resize the bottom of the window // when at the extreme bottom of the view, then the scroll offsets should be // changed - we use the scrollers' own integrity checks to do this automatically. // Don't do this until the setup flag is TRUE, so we don't overwrite scroll offsets // that have been reloaded. if (fSetupDone) { WorkCoord CurrScrollPos; GetScrollOffset(&CurrScrollPos); SetScrollOffset(CurrScrollPos, TRUE); } // Inform the associated DocView object that something has happened. pDocView->ViewStateChanged(); pCurDoc->SetCurrent(); pCurView->SetCurrent(); }
STDMETHODIMP COlePropertiesDialog::XOleUIObjInfo::GetObjectInfo( DWORD dwObject, DWORD* lpdwObjSize, LPTSTR* lplpszLabel, LPTSTR* lplpszType, LPTSTR* lplpszShortType, LPTSTR* lplpszLocation) { COleClientItem* pItem = (COleClientItem*)dwObject; ASSERT_VALID(pItem); BOOL bIsLink = (pItem->GetType() == OT_LINK); if (lpdwObjSize != NULL) { ASSERT(pItem->m_lpStorage != NULL); // try ILockBytes first, then IStorage STATSTG statStg; if ((pItem->m_lpLockBytes == NULL || pItem->m_lpLockBytes->Stat(&statStg, STATFLAG_NONAME) != S_OK) && pItem->m_lpStorage->Stat(&statStg, STATFLAG_NONAME) != S_OK) { *lpdwObjSize = 0xFFFFFFFF; } else { ASSERT(statStg.pwcsName == NULL); if (statStg.cbSize.HighPart > 0) *lpdwObjSize = 0xFFFFFFFE; else if (statStg.cbSize.LowPart == 0) *lpdwObjSize = 0xFFFFFFFF; else *lpdwObjSize = statStg.cbSize.LowPart; } } if (lplpszLabel != NULL) { TCHAR szFormatLink[128]; AfxLoadString(AFX_IDS_PASTELINKEDTYPE, szFormatLink, _countof(szFormatLink)); TCHAR szFormatObj[] = _T("%s"); LPTSTR lpszFormat = bIsLink ? szFormatLink : szFormatObj; CString strType; pItem->GetUserType(USERCLASSTYPE_FULL, strType); CString strResult; strResult.Format(lpszFormat, (LPCTSTR)strType); *lplpszLabel = AfxAllocTaskString(strResult); } if (lplpszType != NULL) { LPOLESTR lpOleStr; pItem->m_lpObject->GetUserType(USERCLASSTYPE_FULL, &lpOleStr); *lplpszType = TASKSTRINGOLE2T(lpOleStr); } if (lplpszShortType != NULL) { LPOLESTR lpOleStr; pItem->m_lpObject->GetUserType(USERCLASSTYPE_SHORT, &lpOleStr); *lplpszShortType = TASKSTRINGOLE2T(lpOleStr); } if (lplpszLocation != NULL) { if (bIsLink) { LPOLELINK lpOleLink = NULL; pItem->m_lpObject->QueryInterface(IID_IOleLink, (LPVOID*)&lpOleLink); ASSERT(lpOleLink != NULL); LPOLESTR lpOleStr; lpOleLink->GetSourceDisplayName(&lpOleStr); *lplpszLocation = TASKSTRINGOLE2T(lpOleStr); lpOleLink->Release(); } else { CDocument* pDoc = (CDocument*)pItem->GetDocument(); CString strLocation = pDoc->GetPathName(); if (strLocation.IsEmpty()) strLocation = pDoc->GetTitle(); *lplpszLocation = AfxAllocTaskString(strLocation); } } return S_OK; }