Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / Design / Util / MSHTMLHost.cs / 1305376 / MSHTMLHost.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
// MSHTMLHost.cs
//
// 12/17/98: Created: [....]
//
namespace System.Web.UI.Design.MobileControls.Util {
using System.Runtime.Serialization.Formatters;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Diagnostics;
using System;
using Microsoft.Win32;
using System.Windows.Forms;
///
///
/// Control that hosts a Trident DocObject.
///
///
//
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
[Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
internal sealed class MSHTMLHost : Control {
private TridentSite tridentSite;
internal MSHTMLHost() : base() {
}
public NativeMethods.IHTMLDocument2 GetDocument() {
Debug.Assert(tridentSite != null,
"Cannot call getDocument before calling createTrident");
return tridentSite.GetDocument();
}
protected override CreateParams CreateParams {
get {
CreateParams cp = base.CreateParams;
cp.ExStyle |= NativeMethods.WS_EX_STATICEDGE;
return cp;
}
}
internal bool CreateTrident() {
Debug.Assert(Handle != IntPtr.Zero,
"MSHTMLHost must first be created before createTrident is called");
try {
tridentSite = new TridentSite(this);
}
catch (Exception e) {
Debug.WriteLine("Exception caught in MSHTMLHost::CreateTrident\n\t" + e.ToString());
return false;
}
return true;
}
internal void ActivateTrident() {
Debug.Assert(tridentSite != null,
"cannot call activateTrident before calling createTrident");
tridentSite.Activate();
}
}
///
///
/// Implements the client site for Trident DocObject
///
[ClassInterface(ClassInterfaceType.None)]
[Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
internal class TridentSite : NativeMethods.IOleClientSite, NativeMethods.IOleDocumentSite, NativeMethods.IOleInPlaceSite, NativeMethods.IOleInPlaceFrame, NativeMethods.IDocHostUIHandler {
protected Control parentControl;
protected NativeMethods.IOleDocumentView tridentView;
protected NativeMethods.IOleObject tridentOleObject;
protected NativeMethods.IHTMLDocument2 tridentDocument;
protected EventHandler resizeHandler;
internal TridentSite(Control parent) {
Debug.Assert((parent != null) && (parent.Handle != IntPtr.Zero),
"Invalid control passed in as parent of Trident window");
parentControl = parent;
resizeHandler = new EventHandler(this.OnParentResize);
parentControl.Resize += resizeHandler;
CreateDocument();
}
public NativeMethods.IHTMLDocument2 GetDocument() {
return tridentDocument;
}
internal void Activate() {
ActivateDocument();
}
protected virtual void OnParentResize(object src, EventArgs e) {
if (tridentView != null) {
NativeMethods.COMRECT r = new NativeMethods.COMRECT();
NativeMethods.GetClientRect(parentControl.Handle, r);
tridentView.SetRect(r);
}
}
///////////////////////////////////////////////////////////////////////////
// IOleClientSite Implementation
public virtual void SaveObject() {
}
public virtual object GetMoniker(int dwAssign, int dwWhichMoniker) {
throw new COMException(String.Empty, NativeMethods.E_NOTIMPL);
}
public virtual int GetContainer(out NativeMethods.IOleContainer ppContainer) {
ppContainer = null;
return NativeMethods.E_NOINTERFACE;
}
public virtual void ShowObject() {
}
public virtual void OnShowWindow(int fShow) {
}
public virtual void RequestNewObjectLayout() {
}
///////////////////////////////////////////////////////////////////////////
// IOleDocumentSite Implementation
public virtual int ActivateMe(NativeMethods.IOleDocumentView pViewToActivate) {
Debug.Assert(pViewToActivate != null,
"Expected the view to be non-null");
if (pViewToActivate == null)
return NativeMethods.E_INVALIDARG;
NativeMethods.COMRECT r = new NativeMethods.COMRECT();
NativeMethods.GetClientRect(parentControl.Handle, r);
tridentView = pViewToActivate;
tridentView.SetInPlaceSite((NativeMethods.IOleInPlaceSite)this);
tridentView.UIActivate(1);
tridentView.SetRect(r);
tridentView.Show(1);
return NativeMethods.S_OK;
}
///////////////////////////////////////////////////////////////////////////
// IOleInPlaceSite Implementation
public virtual IntPtr GetWindow() {
return parentControl.Handle;
}
public virtual void ContextSensitiveHelp(int fEnterMode) {
throw new COMException(String.Empty, NativeMethods.E_NOTIMPL);
}
public virtual int CanInPlaceActivate() {
return NativeMethods.S_OK;
}
public virtual void OnInPlaceActivate() {
}
public virtual void OnUIActivate() {
}
public virtual void GetWindowContext(out NativeMethods.IOleInPlaceFrame ppFrame, out NativeMethods.IOleInPlaceUIWindow ppDoc, NativeMethods.COMRECT lprcPosRect, NativeMethods.COMRECT lprcClipRect, NativeMethods.tagOIFI lpFrameInfo) {
ppFrame = (NativeMethods.IOleInPlaceFrame)this;
ppDoc = null;
NativeMethods.GetClientRect(parentControl.Handle, lprcPosRect);
NativeMethods.GetClientRect(parentControl.Handle, lprcClipRect);
lpFrameInfo.cb = System.Runtime.InteropServices.Marshal.SizeOf(typeof(NativeMethods.tagOIFI));
lpFrameInfo.fMDIApp = 0;
lpFrameInfo.hwndFrame = parentControl.Handle;
lpFrameInfo.hAccel = IntPtr.Zero;
lpFrameInfo.cAccelEntries = 0;
}
public virtual int Scroll(NativeMethods.tagSIZE scrollExtant) {
return(NativeMethods.E_NOTIMPL);
}
public virtual void OnUIDeactivate(int fUndoable) {
// NOTE, [....], 7/99: Don't return E_NOTIMPL. Somehow doing nothing and returning S_OK
// fixes trident hosting in Win2000.
}
public virtual void OnInPlaceDeactivate() {
}
public virtual void DiscardUndoState() {
throw new COMException(SR.GetString(SR.MSHTMLHost_Not_Implemented), NativeMethods.E_NOTIMPL);
}
public virtual void DeactivateAndUndo() {
}
public virtual int OnPosRectChange(NativeMethods.COMRECT lprcPosRect) {
return NativeMethods.S_OK;
}
///////////////////////////////////////////////////////////////////////////
// IOleInPlaceFrame Implementation
public virtual void GetBorder(NativeMethods.COMRECT lprectBorder) {
throw new COMException(String.Empty, NativeMethods.E_NOTIMPL);
}
public virtual void RequestBorderSpace(NativeMethods.COMRECT pborderwidths) {
throw new COMException(String.Empty, NativeMethods.E_NOTIMPL);
}
public virtual void SetBorderSpace(NativeMethods.COMRECT pborderwidths) {
throw new COMException(String.Empty, NativeMethods.E_NOTIMPL);
}
public virtual void SetActiveObject(NativeMethods.IOleInPlaceActiveObject pActiveObject, string pszObjName) {
// NOTE, [....], 7/99: Don't return E_NOTIMPL. Somehow doing nothing and returning S_OK
// fixes trident hosting in Win2000.
// throw new COMException(String.Empty, NativeMethods.E_NOTIMPL);
}
public virtual void InsertMenus(IntPtr hmenuShared, object lpMenuWidths) {
throw new COMException(String.Empty, NativeMethods.E_NOTIMPL);
}
public virtual void SetMenu(IntPtr hmenuShared, IntPtr holemenu, IntPtr hwndActiveObject) {
throw new COMException(String.Empty, NativeMethods.E_NOTIMPL);
}
public virtual void RemoveMenus(IntPtr hmenuShared) {
throw new COMException(String.Empty, NativeMethods.E_NOTIMPL);
}
public virtual void SetStatusText(string pszStatusText) {
}
public virtual void EnableModeless(int fEnable) {
}
public virtual int TranslateAccelerator(ref NativeMethods.MSG lpmsg, short wID) {
return NativeMethods.S_FALSE;
}
///////////////////////////////////////////////////////////////////////////
// IDocHostUIHandler Implementation
public virtual int ShowContextMenu(int dwID, NativeMethods.POINT pt, object pcmdtReserved, object pdispReserved) {
return NativeMethods.S_OK;
}
public virtual int GetHostInfo(NativeMethods.DOCHOSTUIINFO info) {
info.dwDoubleClick = NativeMethods.DOCHOSTUIDBLCLICK.DEFAULT;
info.dwFlags = NativeMethods.DOCHOSTUIFLAG.FLAT_SCROLLBAR |
NativeMethods.DOCHOSTUIFLAG.NO3DBORDER |
NativeMethods.DOCHOSTUIFLAG.DIALOG |
NativeMethods.DOCHOSTUIFLAG.DISABLE_SCRIPT_INACTIVE;
return NativeMethods.S_OK;
}
public virtual int EnableModeless(bool fEnable) {
return NativeMethods.S_OK;
}
public virtual int ShowUI(int dwID, NativeMethods.IOleInPlaceActiveObject activeObject, NativeMethods.IOleCommandTarget commandTarget, NativeMethods.IOleInPlaceFrame frame, NativeMethods.IOleInPlaceUIWindow doc) {
return NativeMethods.S_OK;
}
public virtual int HideUI() {
return NativeMethods.S_OK;
}
public virtual int UpdateUI() {
return NativeMethods.S_OK;
}
public virtual int OnDocWindowActivate(bool fActivate) {
return NativeMethods.E_NOTIMPL;
}
public virtual int OnFrameWindowActivate(bool fActivate) {
return NativeMethods.E_NOTIMPL;
}
public virtual int ResizeBorder(NativeMethods.COMRECT rect, NativeMethods.IOleInPlaceUIWindow doc, bool fFrameWindow) {
return NativeMethods.E_NOTIMPL;
}
public virtual int GetOptionKeyPath(string[] pbstrKey, int dw) {
pbstrKey[0] = null;
return NativeMethods.S_OK;
}
public virtual int GetDropTarget(NativeMethods.IOleDropTarget pDropTarget, out NativeMethods.IOleDropTarget ppDropTarget) {
ppDropTarget = null;
return NativeMethods.S_FALSE;
}
public virtual int GetExternal(out object ppDispatch) {
ppDispatch = null;
return NativeMethods.S_OK;
}
public virtual int TranslateAccelerator(ref NativeMethods.MSG msg, ref Guid group, int nCmdID) {
return NativeMethods.S_OK;
}
public virtual int TranslateUrl(int dwTranslate, string strUrlIn, out string pstrUrlOut) {
pstrUrlOut = null;
return NativeMethods.E_NOTIMPL;
}
public virtual int FilterDataObject(NativeMethods.IOleDataObject pDO, out NativeMethods.IOleDataObject ppDORet) {
ppDORet = null;
return NativeMethods.S_OK;
}
///////////////////////////////////////////////////////////////////////////
// Implementation
///
///
/// Creates a new instance of mshtml and initializes it as a new document
/// using its IPersistStreamInit.
///
protected void CreateDocument() {
try {
// Create an instance of Trident
tridentDocument = (NativeMethods.IHTMLDocument2)new NativeMethods.HTMLDocument();
tridentOleObject = (NativeMethods.IOleObject)tridentDocument;
// Initialize its client site
tridentOleObject.SetClientSite((NativeMethods.IOleClientSite)this);
// Initialize it
NativeMethods.IPersistStreamInit psi = (NativeMethods.IPersistStreamInit)tridentDocument;
psi.InitNew();
}
catch (Exception e) {
Debug.Fail(e.ToString());
throw e;
}
}
///
///
/// Activates the mshtml instance
///
protected void ActivateDocument() {
Debug.Assert(tridentOleObject != null,
"How'd we get here when trident is null!");
try {
NativeMethods.COMRECT r = new NativeMethods.COMRECT();
NativeMethods.GetClientRect(parentControl.Handle, r);
tridentOleObject.DoVerb(NativeMethods.OLEIVERB_UIACTIVATE, IntPtr.Zero, (NativeMethods.IOleClientSite)this, 0, parentControl.Handle, r);
}
catch (Exception e) {
Debug.Fail(e.ToString());
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AmbientLight.cs
- TabControlAutomationPeer.cs
- InvalidateEvent.cs
- ModelChangedEventArgsImpl.cs
- HebrewCalendar.cs
- SqlDataAdapter.cs
- CompiledELinqQueryState.cs
- ButtonField.cs
- CollectionBase.cs
- mil_commands.cs
- UnmanagedHandle.cs
- CodeParameterDeclarationExpressionCollection.cs
- Base64Decoder.cs
- InvalidOleVariantTypeException.cs
- XPathNavigatorReader.cs
- streamingZipPartStream.cs
- TextRangeEditLists.cs
- MemoryRecordBuffer.cs
- AutoCompleteStringCollection.cs
- IndentedWriter.cs
- VectorAnimationBase.cs
- ConsumerConnectionPoint.cs
- ViewValidator.cs
- WeakReadOnlyCollection.cs
- XsltQilFactory.cs
- CalendarDay.cs
- CollectionBuilder.cs
- HyperLinkField.cs
- DataSourceView.cs
- ArgumentValueSerializer.cs
- StreamingContext.cs
- KeyboardDevice.cs
- Graphics.cs
- WindowsListBox.cs
- PointAnimation.cs
- MenuItemCollectionEditor.cs
- PolyLineSegmentFigureLogic.cs
- StopStoryboard.cs
- NullableIntMinMaxAggregationOperator.cs
- SessionStateContainer.cs
- XmlCharCheckingWriter.cs
- RawStylusInputCustomDataList.cs
- TracePayload.cs
- DiagnosticsElement.cs
- DataGridViewButtonColumn.cs
- Translator.cs
- DesignerCategoryAttribute.cs
- ButtonBase.cs
- WorkflowMarkupElementEventArgs.cs
- PerformanceCounterManager.cs
- BaseCAMarshaler.cs
- ItemAutomationPeer.cs
- FieldNameLookup.cs
- KeyManager.cs
- InputProviderSite.cs
- SimpleColumnProvider.cs
- ProviderConnectionPointCollection.cs
- DbExpressionVisitor_TResultType.cs
- SqlTrackingQuery.cs
- SecurityElement.cs
- ExceptionHelpers.cs
- Vector3DIndependentAnimationStorage.cs
- ClaimComparer.cs
- ImageMetadata.cs
- PresentationTraceSources.cs
- SharedHttpTransportManager.cs
- CodeDelegateInvokeExpression.cs
- SemaphoreSecurity.cs
- ProtectedConfigurationSection.cs
- PenContexts.cs
- MobileResource.cs
- CatalogPartCollection.cs
- WebPartConnection.cs
- XmlSchemaAnnotation.cs
- ScrollBarRenderer.cs
- BroadcastEventHelper.cs
- WebMethodAttribute.cs
- SettingsProviderCollection.cs
- MailDefinition.cs
- FileUtil.cs
- LoginCancelEventArgs.cs
- CompilationLock.cs
- Expressions.cs
- XsdBuilder.cs
- BinaryCommonClasses.cs
- EdgeProfileValidation.cs
- VoiceInfo.cs
- XmlCharacterData.cs
- WSHttpBinding.cs
- WasNotInstalledException.cs
- DebugHandleTracker.cs
- DbMetaDataCollectionNames.cs
- CacheDependency.cs
- DataTableExtensions.cs
- ToggleProviderWrapper.cs
- WeakReferenceEnumerator.cs
- AutoResizedEvent.cs
- Nullable.cs
- ReflectEventDescriptor.cs
- MetadataUtilsSmi.cs