Example #1
0
STDMETHODIMP CWENavigatorDlg::handleDeactivateObjectEvent(IUnknown* object, long cookie, BOOL* bAllow)
{
	ATLASSERT(m_layoutView != NULL);

	CEXMLLayoutView* layoutView = static_cast<CEXMLLayoutView*>(m_layoutView.p);
	CComQIPtr<ILHTMLActiveView> htmlview = layoutView->m_pIOleDocView;
	CComPtr<ILHTMLWindow> window;
	htmlview->GetHTMLWindow(&window);

	CComPtr<IEXMLDocument> eDocument = layoutView->m_document;
	IDispEventImpl<2, CWENavigatorDlg, &DIID__IEXMLDocumentEvents, &LIBID_LXMLEDITORLib, 1, 0>::DispEventUnadvise(eDocument);

	IDispEventImpl<4, CWENavigatorDlg, &DIID__ILHTMLWindowEvents, &LIBID_LHTMLLib, 1, 0>::DispEventUnadvise(window);

	m_layoutView.Release();

	m_cnedit.ShowWindow(SW_HIDE);

	if (m_hWnd)
	{
		OnSize();
		InvalidateRect(NULL, TRUE);
	}

	return S_OK;
}
Example #2
0
void CWENavigatorDlg::OnChangeViewBox()
{
	ATLASSERT(0);
#if 0
	if (m_hWnd)
	{
		if (m_layoutView)
		{
			CEXMLLayoutView* layoutView = static_cast<CEXMLLayoutView*>(m_layoutView.p);
			CComQIPtr<ILHTMLActiveView> htmlview = layoutView->m_pIOleDocView;
			CComPtr<ILHTMLWindow> window;
			htmlview->GetHTMLWindow(&window);

			double magnify;
			window->get_magnify(&magnify);

			TCHAR buf[32];
			sprintf(buf, "%g%%", magnify*100);
			m_cnedit.SetWindowText(buf);
		}
	}

	if (m_hWnd)
	{
		OnSize();
		InvalidateRect(NULL, TRUE);
	}
#endif
}
Example #3
0
// IUIEventHandler
STDMETHODIMP CWENavigatorDlg::handleActivateObjectEvent(IUnknown* object, long* cookie)
{
	CComQIPtr<IEXMLLayoutView> view = object;
	if (view)
	{
		ATLASSERT(m_layoutView == NULL);
		m_layoutView = view;

		CEXMLLayoutView* layoutView = static_cast<CEXMLLayoutView*>(m_layoutView.p);
		CComQIPtr<ILHTMLActiveView> htmlview = layoutView->m_pIOleDocView;
		if (htmlview)
		{
			CComPtr<ILHTMLWindow> window;
			htmlview->GetHTMLWindow(&window);
			if (window)
			{
				CComPtr<IEXMLDocument> eDocument = layoutView->m_document;
				IDispEventImpl<2, CWENavigatorDlg, &DIID__IEXMLDocumentEvents, &LIBID_LXMLEDITORLib, 1, 0>::DispEventAdvise(eDocument);

				IDispEventImpl<4, CWENavigatorDlg, &DIID__ILHTMLWindowEvents, &LIBID_LHTMLLib, 1, 0>::DispEventAdvise(window);

				OnChangeViewBox();

				m_cnedit.ShowWindow(SW_SHOW);

				*cookie = 1;
			}
		}
	}

	return S_OK;
}
Example #4
0
STDMETHODIMP CWENavigatorDlg::OnActivate(BOOL bActivate, IUIDlg* pActivateView, IUIDlg* pDeactivateView)
{
	CEXMLLayoutView* layoutView = static_cast<CEXMLLayoutView*>(m_layoutView.p);

	if (bActivate)
	{
		CComQIPtr<ILHTMLActiveView> htmlview = layoutView->m_pIOleDocView;
		CComPtr<ILHTMLWindow> window;
		htmlview->GetHTMLWindow(&window);
		IDispEventImpl<4, CWENavigatorDlg, &DIID__ILHTMLWindowEvents, &LIBID_LHTMLLib, 1, 0>::DispEventAdvise(window);

		OnChangeViewBox();
	}
	else
	{
		CComQIPtr<ILHTMLActiveView> htmlview = layoutView->m_pIOleDocView;
		CComPtr<ILHTMLWindow> window;
		htmlview->GetHTMLWindow(&window);
		IDispEventImpl<4, CWENavigatorDlg, &DIID__ILHTMLWindowEvents, &LIBID_LHTMLLib, 1, 0>::DispEventUnadvise(window);
	}

	return S_OK;
}
Example #5
0
LRESULT CWENavigatorDlg::OnEditKeydown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
	ATLASSERT(0);
#if 0
	if ((uMsg == WM_KILLFOCUS) ||
		(uMsg == WM_KEYDOWN && wParam == VK_RETURN))
	{
		if (m_layoutView)
		{
			TCHAR buf[64];
			m_cnedit.GetWindowText(buf, sizeof(buf));

			double newscale = atof(buf) / 100;

			CEXMLLayoutView* layoutView = static_cast<CEXMLLayoutView*>(m_layoutView.p);
			CComQIPtr<ILHTMLActiveView> htmlview = layoutView->m_pIOleDocView;
			CComPtr<ILHTMLWindow> window;
			htmlview->GetHTMLWindow(&window);

			long innerWidth;
			long innerHeight;
			window->get_innerWidth(&innerWidth);
			window->get_innerHeight(&innerHeight);

			double oldscale;
			window->get_magnify(&oldscale);

			window->ZoomToRect(
				innerWidth/2 - innerWidth*oldscale/newscale/2,
				innerHeight/2 - innerHeight*oldscale/newscale/2,
				innerWidth*oldscale/newscale,
				innerHeight*oldscale/newscale,
				VARIANT_TRUE);
		}

		if (uMsg == WM_KEYDOWN)
			return 0;
	}

	return m_cnedit.DefWindowProc(uMsg, wParam, lParam);
#endif
	return 0;
}
Example #6
0
void CWENavigatorDlg::OnSize()
{
	ATLASSERT(0);
#if 0
	CRect client;
	GetClientRect(&client);

	client.right -= 6;
	client.bottom -= 6+16;

	m_size.cx = 0;
	m_size.cy = 0;

	CEXMLLayoutView* layoutView = static_cast<CEXMLLayoutView*>(m_layoutView.p);

	ATLASSERT(layoutView->m_hWnd);
	if (layoutView->m_hWnd)	// hm.. layoutview isn't activated yet?
	{
		CComQIPtr<ILHTMLActiveView> htmlview = layoutView->m_pIOleDocView;
		CComPtr<ILHTMLWindow> window;
		htmlview->GetHTMLWindow(&window);

		double docwidth;
		double docheight;
		window->get_contentWidth(&docwidth);
		window->get_contentHeight(&docheight);

		int fullwidth = docwidth+200;
		int fullheight = docheight+200;

		m_size.cx = client.Width();
		m_size.cy = (m_size.cx*fullheight)/fullwidth;

		if (m_size.cy > client.Height())
		{
			m_size.cy = client.Height();
			m_size.cx = (m_size.cy*fullwidth)/fullheight;
		}

		m_magnify = (double)m_size.cx/fullwidth;
	}
#endif
}
Example #7
0
LRESULT CWENavigatorDlg::OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
	ATLASSERT(0);
#if 0
	POINT point;
	point.x = (short)LOWORD(lParam);
	point.y = (short)HIWORD(lParam);

	CRect client;
	GetClientRect(&client);

	if (m_dragging)
	{
		ATLASSERT(m_layoutView);
		CEXMLLayoutView* layoutView = static_cast<CEXMLLayoutView*>(m_layoutView.p);
		CComQIPtr<ILHTMLActiveView> htmlview = layoutView->m_pIOleDocView;
		CComPtr<ILHTMLWindow> window;
		htmlview->GetHTMLWindow(&window);
		{
			{

				int left = 100*m_magnify + 3 + (client.Width()-6-m_size.cx)/2;
				int top = 100*m_magnify + 3 + (client.Height()-6-16-m_size.cy)/2;

				POINT cpt;
				cpt.x = point.x-left;
				cpt.y = point.y-top;

				double currentScale;
				window->get_magnify(&currentScale);

				int cx = ((cpt.x/m_magnify) - m_offset.x) * currentScale;
				int cy = ((cpt.y/m_magnify) - m_offset.y) * currentScale;

				window->setCurrentTranslate(-cx, -cy);
			}
		}
	}
#endif

	return 0;
}
Example #8
0
CRect CWENavigatorDlg::GetViewBox()
{
	ATLASSERT(0);
#if 0
	if (m_layoutView)
	{
		CEXMLLayoutView* layoutView = static_cast<CEXMLLayoutView*>(m_layoutView.p);
		CComQIPtr<ILHTMLActiveView> htmlview = layoutView->m_pIOleDocView;
		CComPtr<ILHTMLWindow> window;
		htmlview->GetHTMLWindow(&window);

		CRect viewBox;

		double currentTranslateX;
		double currentTranslateY;
		double magnify;
		long innerWidth;
		long innerHeight;

		window->get_currentTranslateX(&currentTranslateX);
		window->get_currentTranslateY(&currentTranslateY);
		window->get_magnify(&magnify);
		window->get_innerWidth(&innerWidth);
		window->get_innerHeight(&innerHeight);

		viewBox.left = -currentTranslateX/magnify;
		viewBox.top = -currentTranslateY/magnify;
		viewBox.right = -currentTranslateX/magnify + innerWidth/magnify;
		viewBox.bottom = -currentTranslateY/magnify + innerHeight/magnify;

		return viewBox;
	}
#endif

	return CRect(0,0,0,0);
}
Example #9
0
LRESULT CWENavigatorDlg::OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
	ATLASSERT(0);
#if 0
	POINT point;
	point.x = (short)LOWORD(lParam);
	point.y = (short)HIWORD(lParam);

	CRect client;
	GetClientRect(&client);

	if (!m_dragging)
	{
		if (m_layoutView)
		{
			CEXMLLayoutView* layoutView = static_cast<CEXMLLayoutView*>(m_layoutView.p);
			CComQIPtr<ILHTMLActiveView> htmlview = layoutView->m_pIOleDocView;
			CComPtr<ILHTMLWindow> window;
			htmlview->GetHTMLWindow(&window);

		//	if (svgdoc)
			{
				int left = 100*m_magnify + 3 + (client.Width()-6-m_size.cx)/2;
				int top = 100*m_magnify + 3 + (client.Height()-6-16-m_size.cy)/2;
			//	int left = 200*m_magnify + 3 + (client.Width()-6-m_size.cx)/2;
			//	int top = 50*m_magnify + 3 + (client.Height()-6-m_size.cy)/2;

				POINT cpt;
				cpt.x = point.x-left;
				cpt.y = point.y-top;

				CRect viewBox = GetViewBox();

				CRect viewRect = viewBox;

				viewRect.left *= m_magnify;
				viewRect.top *= m_magnify;
				viewRect.right *= m_magnify;
				viewRect.bottom *= m_magnify;

				if (PtInRect(&viewRect, cpt))
				{
					m_offset.x = (cpt.x/m_magnify) - viewBox.left;
					m_offset.y = (cpt.y/m_magnify) - viewBox.top;
				}
				else
				{
					m_offset.x = viewBox.Width()/2;
					m_offset.y = viewBox.Height()/2;

					double currentScale;
					window->get_magnify(&currentScale);

					int cx = ((cpt.x/m_magnify) - m_offset.x) * currentScale;
					int cy = ((cpt.y/m_magnify) - m_offset.y) * currentScale;

					window->setCurrentTranslate(-cx, -cy);
				}

				SetCursor(LoadCursor(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDC_HAND2)));

				m_dragging = TRUE;
				SetCapture();
			}
		}
	}
#endif

	return 0;
}
Example #10
0
LRESULT CWENavigatorDlg::OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
	ATLASSERT(0);
#if 0
	CPaintDC dc(m_hWnd);
//	HDC hDC = dc.m_hDC;

	CRect client;
	GetClientRect(&client);

	if (m_layoutView)
	{
		/*
		CComQIPtr<IWebXMLDocument> esvgDocument;
		m_layoutView->get_ESvgDocument(&esvgDocument);
		*/

		CEXMLLayoutView* layoutView = static_cast<CEXMLLayoutView*>(m_layoutView.p);
		CComQIPtr<ILHTMLActiveView> htmlview = layoutView->m_pIOleDocView;
		if (htmlview)
		{
			CComPtr<ILHTMLWindow> window;
			htmlview->GetHTMLWindow(&window);

			CEXMLDocument* pDocument = static_cast<CEXMLDocument*>(layoutView->m_viewGroup->m_pDocument);

			CComPtr<ILDOMDocument> doc;
			pDocument->get_DOMDocument(&doc);

			LSVG::SVGDocument* svgdoc = doc;

			if (svgdoc)
			{
				CComQIPtr<ILSVGSVGElement> svg;
				svgdoc->get_documentElement((ILDOMElement**)&svg);
				if (svg)
				{
					int state = dc.SaveDC();

					double docwidth;
					double docheight;
					window->get_contentWidth(&docwidth);//= pDocument->GetWidth();
					window->get_contentHeight(&docheight);//= pDocument->GetHeight();

					/*
					int fullwidth = docwidth+400;
					int fullheight = docheight+100;
					*/

					CRect rect;
					rect.left = 3 + (client.Width()-6-m_size.cx)/2;
					rect.top = 3 + (client.Height()-6-16-m_size.cy)/2;
					rect.right = rect.left + m_size.cx;
					rect.bottom = rect.top + m_size.cy;

					CRect brect = rect;

					//FillSolidRect(hDC, &rect, RGB(255, 255, 255));

					brect.InflateRect(1, 1);
					dc.Draw3dRect(&brect, GetSysColor(COLOR_3DSHADOW), GetSysColor(COLOR_3DLIGHT));

					brect.InflateRect(1, 1);
					dc.Draw3dRect(&brect, GetSysColor(COLOR_3DDKSHADOW), GetSysColor(COLOR_3DHILIGHT));

					if (dc.IntersectClipRect(rect.left, rect.top, rect.right, rect.bottom) > NULLREGION)
					{
						if (m_offbm)
						{
							BITMAP bm;
							m_offbm.GetBitmap(&bm);

							if (bm.bmWidth != rect.Width() || bm.bmHeight != rect.Height())
							{
								m_offbm.DeleteObject();
							}
						}

						if (m_offbm == NULL)
						{
							m_offbm.CreateCompatibleBitmap(dc, rect.Width(), rect.Height());
							m_bRedraw = true;
						}


						int x = 100 * m_magnify;
						int y = 100 * m_magnify;

						if (m_bRedraw)
						{
							CDC dc2;
							dc2.CreateCompatibleDC(dc);
							HBITMAP hOldBitmap = (HBITMAP)dc2.SelectBitmap(m_offbm);

							dc2.FillSolidRect(0, 0, rect.Width(), rect.Height(), RGB(255, 255, 255));

							CPoint oldOrg = dc2.SetViewportOrg(x, y);

							CRect prect(0, 0, docwidth*m_magnify, docheight*m_magnify);

							HBRUSH hOldBrush = (HBRUSH)SelectObject(dc2.m_hDC, GetStockObject(NULL_BRUSH));
							Rectangle(dc2.m_hDC, prect.left, prect.top, prect.right, prect.bottom);
							SelectObject(dc2.m_hDC, hOldBrush);

							window->DrawToHdc4(dc2.m_hDC, svg, m_magnify);

							dc2.SetViewportOrg(oldOrg.x, oldOrg.y);

							m_bRedraw = false;

							dc2.SelectBitmap(hOldBitmap);
						}

						if (m_offbm)
						{
							CDC dc2;
							dc2.CreateCompatibleDC(dc);
							HBITMAP hOldBitmap = (HBITMAP)dc2.SelectBitmap(m_offbm);

							dc.BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), dc2, 0, 0, SRCCOPY);

							dc2.SelectBitmap(hOldBitmap);
						}

						dc.SetViewportOrg(rect.left+x, rect.top+y);

					// Draw visible viewRect
						{
							CRect viewBox = GetViewBox();

							CRect viewRect = viewBox;
							viewRect.left *= m_magnify;
							viewRect.top *= m_magnify;
							viewRect.right *= m_magnify;
							viewRect.bottom *= m_magnify;

							viewRect.InflateRect(1, 1);

							HPEN hPen = CreatePen(PS_SOLID, 2, m_viewBoxColor);
							HPEN hOldPen = (HPEN)SelectObject(dc.m_hDC, hPen);
							HBRUSH hOldBrush = (HBRUSH)SelectObject(dc.m_hDC, GetStockObject(NULL_BRUSH));

							Rectangle(dc.m_hDC, viewRect.left, viewRect.top, viewRect.right, viewRect.bottom);

							SelectObject(dc.m_hDC, hOldBrush);
							SelectObject(dc.m_hDC, hOldPen);
							DeleteObject(hPen);
						}
					}

					dc.RestoreDC(state);
				}
			}
		}
	}

	m_bUpdate = false;
#endif

	return 0;
}