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)
 {
 }