亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? axclientview.cpp

?? VisualC++實踐與提高-ActiveX篇源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
			CRectTracker trackerTemp;
			CRect rect;
			SetupTracker(&trackerTemp,m_pSelection);
			trackerTemp.GetTrueRect(rect);
			InvalidateRect(rect);

			pItemHit->m_ptPos=tracker.m_rect.TopLeft();
			pItemHit->m_sizeCur=tracker.m_rect.Size();

			SetupTracker(&trackerTemp,pItemHit);
			trackerTemp.GetTrueRect(rect);
			InvalidateRect(rect);
		
		}

	}
		
	CScrollView::OnLButtonDown(nFlags, point);
}

void CAxClientView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if (m_pSelection != NULL)
	{
		BeginWaitCursor();
		LONG iVerb = OLEIVERB_PRIMARY;
		if (GetKeyState(VK_CONTROL) < 0)
			iVerb = OLEIVERB_OPEN;
		m_pSelection->DoVerb(iVerb, this);
		EndWaitCursor();
	}

	CScrollView::OnLButtonDblClk(nFlags, point);
}

CAxClientCntrItem* CAxClientView::DoPasteItem(BOOL bLink, COleDataObject* pDataObject,
	CPoint* pPoint, CLIPFORMAT cfFormat)
{
	BeginWaitCursor();

	CAxClientCntrItem* pItem = new CAxClientCntrItem(GetDocument());
	ASSERT_VALID(pItem);
	BOOL bAllowAdjust = (pPoint == NULL) ? TRUE : FALSE;

	// use clipboard data if not doing drag/drop
	COleDataObject clipboardData;
	if (pDataObject == NULL)
	{
		clipboardData.AttachClipboard();
		pDataObject = &clipboardData;
	}

	TRY
	{
		if (bAllowAdjust)
		{
			CPoint ptDef(10, 10);
			DoPasteStandard(bLink, pDataObject, &ptDef, pItem, cfFormat);
		}
		else
		{
			DoPasteStandard(bLink, pDataObject, pPoint, pItem, cfFormat);
		}

	}
	CATCH_ALL(e)
	{
		// general cleanup
		TRACE0("failed to embed/link an OLE object\n");
		pItem->Delete();
		pItem = NULL;
	}
	END_CATCH_ALL

	// set the selection with bSafeSelect = TRUE
	SetSelection(pItem);

	// update the document and views
	GetDocument()->SetModifiedFlag();
	GetDocument()->UpdateAllViews(NULL, 0, pItem);      // including this view

	EndWaitCursor();

	return pItem;
}

void CAxClientView::DoPasteStandard(BOOL bLink, COleDataObject* pDataObject,
	CPoint* pPoint, CAxClientCntrItem* pItem, CLIPFORMAT cfFormat)
{
	if (bLink)      // paste link
	{
		if (!pItem->CreateLinkFromData(pDataObject))
			AfxThrowMemoryException();  // any exception will do
	}
	// paste embedded
	else if (!pItem->CreateFromData(pDataObject) &&
		!pItem->CreateStaticFromData(pDataObject, OLERENDER_DRAW, cfFormat))
	{
		AfxThrowMemoryException();      // any exception will do
	}

	// copy the current iconic representation
	FORMATETC fmtetc;
	fmtetc.cfFormat = CF_METAFILEPICT;
	fmtetc.dwAspect = DVASPECT_ICON;
	fmtetc.ptd = NULL;
	fmtetc.tymed = TYMED_MFPICT;
	fmtetc.lindex = 1;
	HGLOBAL hObj = pDataObject->GetGlobalData(CF_METAFILEPICT, &fmtetc);
	if (hObj != NULL)
	{
		pItem->SetIconicMetafile(hObj);
		// the following code is an easy way to free a metafile pict
		STGMEDIUM stgMed;
		memset(&stgMed, 0, sizeof(stgMed));
		stgMed.tymed = TYMED_MFPICT;
		stgMed.hGlobal = hObj;
		ReleaseStgMedium(&stgMed);
	}

	// set the current drawing aspect
	hObj = pDataObject->GetGlobalData(m_cfObjectDescriptor);
	if (hObj != NULL)
	{
		ASSERT(hObj != NULL);
		// got CF_OBJECTDESCRIPTOR ok.  Lock it down and extract size.
		LPOBJECTDESCRIPTOR pObjDesc = (LPOBJECTDESCRIPTOR)GlobalLock(hObj);
		ASSERT(pObjDesc != NULL);
		pItem->SetDrawAspect((DVASPECT)pObjDesc->dwDrawAspect);
		GlobalUnlock(hObj);
		GlobalFree(hObj);
	}

	// set top-left based on point of drop
	if (pPoint != NULL)
		pItem->m_ptPos = *pPoint;

	// get size from drag/drop operation
	CSize size;
	if (GetObjectInfo(pDataObject, &size, NULL) && size.cx != 0 && size.cy != 0)
	{
		// use size obtained from object instead of default
		size.cx = MulDiv(size.cx, 10, 254);
		size.cy = -MulDiv(size.cy, 10, 254);
		pItem->m_sizeCur=size;
		CSize sizeExtent;
		pItem->GetCachedExtent(&sizeExtent);
		pItem->m_sizeOrg=sizeExtent;
	}
	else
	{
		// no extent from CF_OBJECTDESCRIPTOR, use extent from object
		pItem->UpdateExtent();
	}
}

BOOL CAxClientView::GetObjectInfo(COleDataObject* pDataObject,
	CSize* pSize, CSize* pOffset)
{
	ASSERT(pSize != NULL);

	// get object descriptor data
	HGLOBAL hObjDesc = pDataObject->GetGlobalData(m_cfObjectDescriptor);
	if (hObjDesc == NULL)
	{
		if (pOffset != NULL)
			*pOffset = CSize(0, 0); // fill in defaults instead
		*pSize = CSize(0, 0);
		return FALSE;
	}
	ASSERT(hObjDesc != NULL);

	// otherwise, got CF_OBJECTDESCRIPTOR ok.  Lock it down and extract size.
	LPOBJECTDESCRIPTOR pObjDesc = (LPOBJECTDESCRIPTOR)GlobalLock(hObjDesc);
	ASSERT(pObjDesc != NULL);
	pSize->cx = (int)pObjDesc->sizel.cx;
	pSize->cy = (int)pObjDesc->sizel.cy;
	if (pOffset != NULL)
	{
		pOffset->cx = (int)pObjDesc->pointl.x;
		pOffset->cy = (int)pObjDesc->pointl.y;
	}
	GlobalUnlock(hObjDesc);
	GlobalFree(hObjDesc);

	// successfully retrieved pSize & pOffset info
	return TRUE;
}

void CAxClientView::OnEditPaste() 
{
	// TODO: Add your command handler code here
	if (DoPasteItem(FALSE, NULL, NULL) == NULL)
		AfxMessageBox("粘貼對象錯誤!");
	
}

void CAxClientView::OnUpdateEditPaste(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	COleDataObject dataObj;
	BOOL bEnable = dataObj.AttachClipboard();
	// enable command based on availability
	pCmdUI->Enable(bEnable);
}

void CAxClientView::OnEditDel() 
{
	// TODO: Add your command handler code here
	if(m_pSelection != NULL)
	{
		CRectTracker trackerTemp;
		CRect rect;
		SetupTracker(&trackerTemp,m_pSelection);
		trackerTemp.GetTrueRect(rect);

		m_pSelection->Delete();
		m_pSelection=NULL;
		
		InvalidateRect(rect);
	}
}

void CAxClientView::OnUpdateEditDel(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(m_pSelection != NULL);	
}

void CAxClientView::OnEditCut() 
{
	// TODO: Add your command handler code here
	ASSERT(m_pSelection != NULL);
	TRY
	{
		m_pSelection->CopyToClipboard(TRUE);
		OnEditDel();
	}
	CATCH_ALL(e)
	{
		AfxMessageBox("剪切操作失??!");
	}
	END_CATCH_ALL
	
}

void CAxClientView::OnUpdateEditCut(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(m_pSelection != NULL);	
}

void CAxClientView::OnEditCopy() 
{
	// TODO: Add your command handler code here
	ASSERT(m_pSelection != NULL);
	TRY
	{
		m_pSelection->CopyToClipboard(TRUE);
	}
	CATCH_ALL(e)
	{
		AfxMessageBox("復制工作失??!");
	}
	END_CATCH_ALL
	
}

void CAxClientView::OnUpdateEditCopy(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(m_pSelection != NULL);	
}

void CAxClientView::OnEditPasteSpecial() 
{
	// TODO: Add your command handler code here
	COlePasteSpecialDialog dlg;
	dlg.AddStandardFormats();
	if (dlg.DoModal() != IDOK)
		return;

	CAxClientCntrItem* pItem = NULL;
	TRY
	{
		// Get the clipboard format of the selected
		CLIPFORMAT cf = dlg.m_ps.arrPasteEntries[dlg.m_ps.nSelectedIndex].fmtetc.cfFormat;
		pItem = new CAxClientCntrItem;
		if (!dlg.CreateItem(pItem))
		{
			TRACE0("Warning: paste special failed to create item.\n");
			AfxThrowMemoryException();
		}

		// try to get initial presentation data
		pItem->UpdateLink();

		// try to get initial extent
		pItem->UpdateExtent();

		// set the selection with bSafeSelect = TRUE
		SetSelection(pItem);
		GetDocument()->SetModifiedFlag();
		GetDocument()->UpdateAllViews(NULL, 0, pItem);
	}
	CATCH_ALL(e)
	{
		// cleanup item, if allocated
		if (pItem != NULL)
			pItem->Delete();
		AfxMessageBox(IDP_FAILED_TO_CREATE);
		return;
	}
	END_CATCH_ALL
}

void CAxClientView::OnUpdateEditPasteSpecial(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	COleDataObject dataObj;
	BOOL bEnable = dataObj.AttachClipboard();
	// enable command based on availability
	pCmdUI->Enable(bEnable);
}


void CAxClientView::OnEditPasteLink() 
{
	// TODO: Add your command handler code here
	if (DoPasteItem(TRUE, NULL, NULL) == NULL)
		AfxMessageBox("粘貼鏈接失敗!");
	
}

class COlePropertiesEx : public COlePropertiesDialog
{
public:
	COlePropertiesEx(COleClientItem* pItem,
		UINT nScaleMin = 10, UINT nScaleMax = 500, CWnd* pParentWnd = NULL)
		: COlePropertiesDialog(pItem, nScaleMin, nScaleMax, pParentWnd)
		{ }

	virtual BOOL OnApplyScale(
		COleClientItem* pItem, int nCurrentScale, BOOL bRelativeToOrig);
};

//////////////////////////////////////////////////////////////////////////
//	在屬性對話框中實現比例放縮
//	pItem:				指向對象的指針,包含對象的信息
//	nCurrentScale:		取得用戶所選的放縮比例
//	bRelativeToOrig:	判斷是否按原始尺寸進行放縮

BOOL COlePropertiesEx::OnApplyScale(
	COleClientItem* pItemIn, int nCurrentScale, BOOL bRelativeToOrig)
{
	if (nCurrentScale != -1)
	{
		ASSERT_VALID(pItemIn);
		CAxClientCntrItem* pItem=(CAxClientCntrItem*)pItemIn;
		pItem->GetDocument()->UpdateAllViews(NULL, 0, pItem);

		// reset to original size if necessary
		//	根據原始尺寸進行放縮
		if (bRelativeToOrig)
		{
			pItem->m_sizeOrg=CSize(0,0);
			pItem->UpdateExtent();
		}			

		// update extent to reflect scaling factor
		pItem->GetDocument()->UpdateAllViews(NULL, 0, pItem);
		
		//	根據用戶所選的比例計算放縮后的尺寸
		CSize size=pItem->m_sizeCur;
		size.cx = MulDiv(size.cx, nCurrentScale, 100);
		size.cy = MulDiv(size.cy, nCurrentScale, 100);
		pItem->m_sizeCur=size;
		
		pItem->GetDocument()->UpdateAllViews(NULL, 0, pItem);
	}
	return TRUE;
}

void CAxClientView::OnOleEditProperties() 
{
	// TODO: Add your command handler code here
	if(m_pSelection==NULL)
		return;

//	COlePropertiesDialog dlg(m_pSelection);
	COlePropertiesEx dlg(m_pSelection);
	dlg.DoModal();
	
}

void CAxClientView::OnUpdateOleEditProperties(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(m_pSelection != NULL);	
}

void CAxClientView::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	GetParentFrame()->ActivateFrame();

	SetSelection(HitTestItems(point));    // reselect item if appropriate
	UpdateWindow();

	if (m_pSelection != NULL)
	{
		CMenu bar;
		if (bar.LoadMenu(IDR_MENU_OBJECT))
		{
			CMenu& popup = *bar.GetSubMenu(0);
			ASSERT(popup.m_hMenu != NULL);

			ClientToScreen(&point);
			popup.TrackPopupMenu(TPM_RIGHTBUTTON,
				point.x, point.y,
				AfxGetMainWnd()); // route commands through main window
		}
	}
	
	CScrollView::OnRButtonDown(nFlags, point);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区不卡在线| 欧美亚洲综合色| 日本强好片久久久久久aaa| 中文字幕一区不卡| 国产精品久久久久国产精品日日| 精品不卡在线视频| 久久婷婷成人综合色| 久久影院电视剧免费观看| 精品国产凹凸成av人网站| 欧美一区二区性放荡片| 欧美成人精品福利| 欧美精品一区二区三区视频| 久久精品一区二区三区不卡| 中日韩av电影| 一区二区三区中文在线| 性做久久久久久| 精品一区二区三区视频在线观看| 国产精品99久久久久久久女警 | 亚洲欧美综合网| 亚洲欧洲一区二区在线播放| 成人欧美一区二区三区视频网页| 樱桃视频在线观看一区| 亚洲成国产人片在线观看| 麻豆视频一区二区| 成人免费毛片嘿嘿连载视频| 色婷婷精品久久二区二区蜜臀av | 日韩精品最新网址| 国产女人aaa级久久久级 | 精品国产乱码久久久久久久久| 久久久久高清精品| 一区二区三区在线免费| 日本视频中文字幕一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久99久久99精品免视看婷婷 | 一区二区三区成人| 美腿丝袜亚洲三区| 91麻豆成人久久精品二区三区| 在线不卡免费av| 国产精品美日韩| 日本美女一区二区| 丁香六月综合激情| 91精品国产综合久久久久| 中文字幕永久在线不卡| 日本va欧美va瓶| 色屁屁一区二区| 久久婷婷成人综合色| 日日夜夜精品视频免费| 99精品国产视频| 国产亚洲精品资源在线26u| 亚洲最新在线观看| 不卡一区中文字幕| 亚洲精品一线二线三线无人区| 中文字幕不卡三区| 91黄视频在线| 激情图片小说一区| 欧美日韩一卡二卡| 日韩毛片在线免费观看| 国产真实乱子伦精品视频| 欧美日韩美女一区二区| 亚洲三级在线播放| 国产精品一区专区| 欧美成人三级在线| 美腿丝袜一区二区三区| 欧美午夜一区二区三区免费大片| 国产三级精品三级在线专区| 精品综合免费视频观看| 欧美一级在线视频| 日韩国产在线一| 欧美片网站yy| 香蕉成人啪国产精品视频综合网| 99久久精品免费看国产免费软件| 久久久久久久久久久久电影 | 亚洲综合在线五月| 99麻豆久久久国产精品免费优播| 久久嫩草精品久久久精品一| 久久精品国产成人一区二区三区| 欧美一区二区三区四区久久| 国产精品一区二区在线看| 欧美卡1卡2卡| 婷婷综合五月天| 在线观看91av| 久久99精品一区二区三区三区| 欧美一区二区成人| 国产一区欧美一区| 欧美激情自拍偷拍| 99久久99久久久精品齐齐| 亚洲卡通动漫在线| 在线观看91精品国产麻豆| 老司机精品视频导航| 久久婷婷成人综合色| 成人午夜视频在线观看| 国产精品久久久久久妇女6080| www.亚洲激情.com| 亚洲在线视频一区| 欧美日韩极品在线观看一区| 亚洲一区二区三区四区在线免费观看| 91久久精品日日躁夜夜躁欧美| 一区二区三区精品在线观看| 在线播放日韩导航| 麻豆一区二区三| 中文字幕在线一区免费| 欧美体内she精高潮| 麻豆国产欧美日韩综合精品二区| 国产欧美精品一区二区色综合朱莉 | 97国产一区二区| 午夜视频久久久久久| 久久综合九色综合97_久久久| 成人av片在线观看| 丝袜美腿成人在线| 国产日韩欧美一区二区三区综合| 欧美一a一片一级一片| 国产在线精品一区在线观看麻豆| 自拍偷拍亚洲综合| 欧美成人性福生活免费看| 97精品久久久午夜一区二区三区| 婷婷开心激情综合| 日韩一区在线免费观看| 日韩女优制服丝袜电影| 色又黄又爽网站www久久| 麻豆一区二区在线| 亚洲电影第三页| 国产精品色呦呦| 欧美一级理论片| 91国偷自产一区二区使用方法| 国产一区二区成人久久免费影院| 一区二区三区在线观看欧美| 久久久精品黄色| 欧美一三区三区四区免费在线看 | 欧美在线看片a免费观看| 国内精品久久久久影院薰衣草| 亚洲国产精品一区二区久久恐怖片| 久久久激情视频| 欧美一区二区三区公司| 欧洲亚洲国产日韩| 99re这里只有精品首页| 国产精品一区二区久久不卡| 美女一区二区视频| 午夜视黄欧洲亚洲| 亚洲第一久久影院| 一区二区免费视频| 亚洲免费伊人电影| 日韩伦理电影网| 成人免费小视频| 国产精品区一区二区三| 亚洲欧洲日韩在线| 综合激情成人伊人| 国产精品乱码一区二三区小蝌蚪| 久久综合九色综合欧美98 | 中文字幕亚洲区| 国产欧美精品日韩区二区麻豆天美| 精品欧美一区二区三区精品久久| 欧美精选一区二区| 欧美日韩成人综合在线一区二区| 91久久香蕉国产日韩欧美9色| 色婷婷精品久久二区二区蜜臂av| eeuss鲁片一区二区三区 | 精品视频1区2区| 欧美少妇性性性| 色偷偷久久一区二区三区| 成人av电影在线| av中文一区二区三区| 国产成人在线观看| 国产乱淫av一区二区三区 | 精品免费日韩av| 26uuu精品一区二区在线观看| 久久久久国产精品厨房| 日本一区二区视频在线| 国产精品超碰97尤物18| 亚洲美女精品一区| 亚洲午夜免费福利视频| 日韩成人av影视| 国产一区二区三区久久悠悠色av| 大胆欧美人体老妇| 91国偷自产一区二区三区观看| 欧美日韩在线播放一区| 91精品国产91热久久久做人人 | 国产成人免费高清| 色综合视频在线观看| 欧美色爱综合网| 日韩欧美色综合| 国产精品麻豆网站| 天堂蜜桃91精品| 国产不卡免费视频| 日本精品裸体写真集在线观看| 91精品国产高清一区二区三区蜜臀 | 麻豆成人91精品二区三区| 国产美女av一区二区三区| 成人av在线播放网站| 717成人午夜免费福利电影| 国产农村妇女毛片精品久久麻豆| 亚洲影院理伦片| 成人一区二区在线观看| 欧美日韩精品高清| 日韩一区有码在线| 国产露脸91国语对白| 精品视频一区三区九区| 中文字幕一区二区三中文字幕| 日韩专区中文字幕一区二区| 成人动漫一区二区在线| 日韩精品一区二区三区视频播放 |