protected BaseCAMarshaler(System.Windows.Forms.NativeMethods.CA_STRUCT caStruct) { if (caStruct == null) { this.count = 0; } this.count = caStruct.cElems; this.caArrayAddress = caStruct.pElems; }
private void OnGetTypeConverterAndTypeEditor(Com2PropertyDescriptor sender, GetTypeConverterAndTypeEditorEvent gveevent) { if (sender.TargetObject is System.Windows.Forms.NativeMethods.IPerPropertyBrowsing) { System.Windows.Forms.NativeMethods.IPerPropertyBrowsing targetObject = (System.Windows.Forms.NativeMethods.IPerPropertyBrowsing) sender.TargetObject; bool flag = false; System.Windows.Forms.NativeMethods.CA_STRUCT pCaStringsOut = new System.Windows.Forms.NativeMethods.CA_STRUCT(); System.Windows.Forms.NativeMethods.CA_STRUCT pCaCookiesOut = new System.Windows.Forms.NativeMethods.CA_STRUCT(); int errorCode = 0; try { errorCode = targetObject.GetPredefinedStrings(sender.DISPID, pCaStringsOut, pCaCookiesOut); } catch (ExternalException exception) { errorCode = exception.ErrorCode; } if (gveevent.TypeConverter is Com2IPerPropertyEnumConverter) { gveevent.TypeConverter = null; } if (errorCode != 0) { flag = false; } else { flag = true; } if (flag) { OleStrCAMarshaler names = new OleStrCAMarshaler(pCaStringsOut); Int32CAMarshaler values = new Int32CAMarshaler(pCaCookiesOut); if ((names.Count > 0) && (values.Count > 0)) { gveevent.TypeConverter = new Com2IPerPropertyEnumConverter(new Com2IPerPropertyBrowsingEnum(sender, this, names, values, true)); } } if (!flag && !sender.ConvertingNativeType) { Guid propertyPageGuid = this.GetPropertyPageGuid(targetObject, sender.DISPID); if (!Guid.Empty.Equals(propertyPageGuid)) { gveevent.TypeEditor = new Com2PropertyPageUITypeEditor(sender, propertyPageGuid, (UITypeEditor) gveevent.TypeEditor); } } } }
private void OnGetTypeConverterAndTypeEditor(Com2PropertyDescriptor sender, GetTypeConverterAndTypeEditorEvent gveevent) { if (sender.TargetObject is System.Windows.Forms.NativeMethods.IPerPropertyBrowsing) { System.Windows.Forms.NativeMethods.IPerPropertyBrowsing targetObject = (System.Windows.Forms.NativeMethods.IPerPropertyBrowsing)sender.TargetObject; bool flag = false; System.Windows.Forms.NativeMethods.CA_STRUCT pCaStringsOut = new System.Windows.Forms.NativeMethods.CA_STRUCT(); System.Windows.Forms.NativeMethods.CA_STRUCT pCaCookiesOut = new System.Windows.Forms.NativeMethods.CA_STRUCT(); int errorCode = 0; try { errorCode = targetObject.GetPredefinedStrings(sender.DISPID, pCaStringsOut, pCaCookiesOut); } catch (ExternalException exception) { errorCode = exception.ErrorCode; } if (gveevent.TypeConverter is Com2IPerPropertyEnumConverter) { gveevent.TypeConverter = null; } if (errorCode != 0) { flag = false; } else { flag = true; } if (flag) { OleStrCAMarshaler names = new OleStrCAMarshaler(pCaStringsOut); Int32CAMarshaler values = new Int32CAMarshaler(pCaCookiesOut); if ((names.Count > 0) && (values.Count > 0)) { gveevent.TypeConverter = new Com2IPerPropertyEnumConverter(new Com2IPerPropertyBrowsingEnum(sender, this, names, values, true)); } } if (!flag && !sender.ConvertingNativeType) { Guid propertyPageGuid = this.GetPropertyPageGuid(targetObject, sender.DISPID); if (!Guid.Empty.Equals(propertyPageGuid)) { gveevent.TypeEditor = new Com2PropertyPageUITypeEditor(sender, propertyPageGuid, (UITypeEditor)gveevent.TypeEditor); } } } }
internal void UpdateTypeConverterAndTypeEditorInternal(bool force, int dispid) { if ((!this.GetFlag(1) || force) && (this.owner.GetOcx() != null)) { try { System.Windows.Forms.NativeMethods.IPerPropertyBrowsing perPropertyBrowsing = this.owner.GetPerPropertyBrowsing(); if (perPropertyBrowsing != null) { bool flag = false; System.Windows.Forms.NativeMethods.CA_STRUCT pCaStringsOut = new System.Windows.Forms.NativeMethods.CA_STRUCT(); System.Windows.Forms.NativeMethods.CA_STRUCT pCaCookiesOut = new System.Windows.Forms.NativeMethods.CA_STRUCT(); int errorCode = 0; try { errorCode = perPropertyBrowsing.GetPredefinedStrings(dispid, pCaStringsOut, pCaCookiesOut); } catch (ExternalException exception) { errorCode = exception.ErrorCode; } if (errorCode != 0) { flag = false; if (this.converter is Com2EnumConverter) { this.converter = null; } } else { flag = true; } if (flag) { OleStrCAMarshaler names = new OleStrCAMarshaler(pCaStringsOut); Int32CAMarshaler values = new Int32CAMarshaler(pCaCookiesOut); if ((names.Count > 0) && (values.Count > 0)) { if (this.converter == null) { this.converter = new AxHost.AxEnumConverter(this, new AxHost.AxPerPropertyBrowsingEnum(this, this.owner, names, values, true)); } else if (this.converter is AxHost.AxEnumConverter) { ((AxHost.AxEnumConverter) this.converter).RefreshValues(); AxHost.AxPerPropertyBrowsingEnum enum2 = ((AxHost.AxEnumConverter) this.converter).com2Enum as AxHost.AxPerPropertyBrowsingEnum; if (enum2 != null) { enum2.RefreshArrays(names, values); } } } } else if (((ComAliasNameAttribute) this.baseProp.Attributes[typeof(ComAliasNameAttribute)]) == null) { Guid propertyPage = this.GetPropertyPage(dispid); if (!Guid.Empty.Equals(propertyPage)) { this.editor = new AxHost.AxPropertyTypeEditor(this, propertyPage); if (!this.IsBrowsable) { this.AddAttribute(new BrowsableAttribute(true)); } } } } this.SetFlag(1, true); } catch (Exception) { } } }
public OleStrCAMarshaler(System.Windows.Forms.NativeMethods.CA_STRUCT caAddr) : base(caAddr) { }