⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatrichtextbox.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 3 页
字号:
        internal bool GetSelection(int nStart, int nEnd, out Font font, out Color color)
        {
            base.Select(nStart, 1);
            CHARFORMAT2_STRUCT structure = new CHARFORMAT2_STRUCT();
            structure.cbSize = (uint) Marshal.SizeOf(structure);
            structure.szFaceName = new char[0x20];
            structure.dwEffects |= 0x10000000;
            IntPtr wParam = new IntPtr(1);
            IntPtr ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf(structure));
            Marshal.StructureToPtr(structure, ptr, false);
            SendMessage(base.Handle, 0x43a, wParam, ptr);
            structure = (CHARFORMAT2_STRUCT) Marshal.PtrToStructure(ptr, typeof(CHARFORMAT2_STRUCT));
            string familyName = "";
            for (int i = 0; i < structure.szFaceName.GetLength(0); i++)
            {
                if (structure.szFaceName[i] != '\0')
                {
                    familyName = familyName + structure.szFaceName[i].ToString();
                }
            }
            FontStyle regular = FontStyle.Regular;
            if ((structure.dwMask & 1) == 1)
            {
                regular |= FontStyle.Bold;
            }
            if ((structure.dwMask & 2) == 2)
            {
                regular |= FontStyle.Italic;
            }
            if ((structure.dwMask & 8) == 8)
            {
                regular |= FontStyle.Strikeout;
            }
            if ((structure.dwMask & 4) == 4)
            {
                regular |= FontStyle.Underline;
            }
            font = new Font(familyName, (float) (structure.yHeight / 20), regular);
            color = Color.FromArgb(structure.crBackColor);
            Marshal.FreeCoTaskMem(ptr);
            return true;
        }

        public int GetSelectionLink()
        {
            return this.GetSelectionStyle(0x20, 0x20);
        }

        private int GetSelectionStyle(uint mask, uint effect)
        {
            int num;
            CHARFORMAT2_STRUCT structure = new CHARFORMAT2_STRUCT();
            structure.cbSize = (uint) Marshal.SizeOf(structure);
            structure.szFaceName = new char[0x20];
            IntPtr wParam = new IntPtr(1);
            IntPtr ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf(structure));
            Marshal.StructureToPtr(structure, ptr, false);
            SendMessage(base.Handle, 0x43a, wParam, ptr);
            structure = (CHARFORMAT2_STRUCT) Marshal.PtrToStructure(ptr, typeof(CHARFORMAT2_STRUCT));
            if ((structure.dwMask & mask) == mask)
            {
                if ((structure.dwEffects & effect) == effect)
                {
                    num = 1;
                }
                else
                {
                    num = 0;
                }
            }
            else
            {
                num = -1;
            }
            Marshal.FreeCoTaskMem(ptr);
            return num;
        }

        [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
        internal static extern bool GetWindowRect(IntPtr hWnd, [In, Out] ref Rectangle rect);
        public void HideFocusSelection(bool bHide, bool bPermanent)
        {
            SendMessage1(base.Handle, 0x43f, bHide, bPermanent);
        }

        internal bool InsertImage(AmigoImage image, Size size, int index)
        {
            try
            {
                string progID = "AmigoOleObject.Object.1";
                Type typeFromProgID = Type.GetTypeFromProgID(progID);
                if (typeFromProgID != null)
                {
                    int x;
                    int y;
                    object obj2 = Activator.CreateInstance(typeFromProgID);
                    IDynGifCtl ctl = (IDynGifCtl) obj2;
                    ctl.GetSize(size.Width + 1, size.Height + 1, out x, out y);
                    Bitmap bitmap = new Bitmap(image.Image, size);
                    BitmapData bitmapdata = null;
                    try
                    {
                        bitmapdata = bitmap.LockBits(new Rectangle(0, 0, size.Width, size.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
                        int dataLength = bitmapdata.Stride * bitmap.Height;
                        ctl.PlayImageFromBitmapData4(bitmapdata.Scan0.ToInt32(), dataLength, size.Width, size.Height);
                    }
                    catch (Exception exception)
                    {
                        ClientLogger.WriteException(exception);
                        return false;
                    }
                    finally
                    {
                        if (bitmapdata != null)
                        {
                            bitmap.UnlockBits(bitmapdata);
                        }
                        bitmap.Dispose();
                    }
                    if (obj2 is Imps.Client.Pc.BizControls.IOleObject)
                    {
                        REOBJECT reobject = this.InsertOleObject((Imps.Client.Pc.BizControls.IOleObject) obj2, new Size(x, y), index);
                        this._IDynaCtrlLib.Add(reobject, ctl);
                        return true;
                    }
                }
                return false;
            }
            catch (Exception exception2)
            {
                ClientLogger.WriteException(exception2);
                return false;
            }
        }

        public void InsertLink(string LinkText, string LinkCommand)
        {
            this.InsertLink(LinkText, LinkCommand, base.SelectionStart);
        }

        public void InsertLink(string text, Font font, Color color)
        {
            this.InsertLink(text, base.SelectionStart, font, color);
        }

        public void InsertLink(string LinkText, string LinkCommand, int position)
        {
            if ((position < 0) || (position > this.Text.Length))
            {
                throw new ArgumentOutOfRangeException("position");
            }
            base.SelectionStart = position;
            base.SelectedRtf = @"{\rtf1\rtlch " + LinkText + @"\v #" + LinkCommand + @"\v0}";
            base.Select(position, (LinkCommand.Length + LinkText.Length) + 1);
            this.SetSelectionLink(true);
            base.Select(((position + LinkCommand.Length) + LinkText.Length) + 1, 0);
        }

        public void InsertLink(string text, int position, Font font, Color color)
        {
            if ((position < 0) || (position > this.Text.Length))
            {
                throw new ArgumentOutOfRangeException("position");
            }
            base.SelectionStart = position;
            this.SelectedText = text;
            base.Select(position, text.Length);
            base.SelectionColor = color;
            base.SelectionFont = font;
            this.SetSelectionLink(true);
            base.Select(position + text.Length, 0);
        }

        internal REOBJECT InsertOleObject(Imps.Client.Pc.BizControls.IOleObject oleObj, Size size, int index)
        {
            REOBJECT reobject = new RichEditOle(this).InsertOleObject(oleObj, size, index);
            this._reObjDict.Add(index, reobject);
            oleObj.SetExtent(1, ref size);
            return reobject;
        }

        internal bool InsertProgressBar(string infoTip, Size size, Color color, Color textColor, int index, AmigoImage image, string sBarImageText, string fontName, int fontSize, int barWidth, int barHeight)
        {
            string progID = "AmigoOleObject.Object.1";
            Type typeFromProgID = Type.GetTypeFromProgID(progID);
            if (typeFromProgID != null)
            {
                int x;
                int y;
                object obj2 = Activator.CreateInstance(typeFromProgID);
                IDynGifCtl ctl = (IDynGifCtl) obj2;
                ctl.GetSize(size.Width, size.Height, out x, out y);
                Bitmap bitmap = new Bitmap(image.CurrentImage);
                IntPtr hObject = bitmap.GetHbitmap();
                try
                {
                    ctl.InsertProgressBar(hObject.ToInt32(), infoTip, color.R, color.G, color.B, textColor.R, textColor.G, textColor.B, sBarImageText, fontName, fontSize, barWidth, barHeight);
                }
                finally
                {
                    bitmap.Dispose();
                    DeleteObject(hObject);
                }
                if (obj2 is Imps.Client.Pc.BizControls.IOleObject)
                {
                    Size size2 = new Size(x, y);
                    this.InsertOleObject((Imps.Client.Pc.BizControls.IOleObject) obj2, size2, index);
                    return true;
                }
            }
            return false;
        }

        internal void InsertString(string text)
        {
            if ((this.MaxLength <= 0) || (this.TextLength <= this.MaxLength))
            {
                text = text.Replace("\r\n", "\n");
                if ((text.Length + this.TextLength) > this.MaxLength)
                {
                    text = text.Substring(0, this.MaxLength - this.TextLength);
                }
                IntPtr wParam = new IntPtr(1);
                IntPtr lParam = Marshal.StringToBSTR(text);
                SendMessage(base.Handle, 0xc2, wParam, lParam);
                Marshal.FreeCoTaskMem(wParam);
                Marshal.FreeBSTR(lParam);
            }
        }

        internal bool IsOleObject(int iPos)
        {
            RichEditOle ole = new RichEditOle(this);
            IRichEditOle iRichEditOle = ole.IRichEditOle;
            REOBJECT lpreobject = new REOBJECT();
            lpreobject.cp = iPos;
            return (iRichEditOle.GetObject(-2, lpreobject, GETOBJECTOPTIONS.REO_GETOBJ_POLEOBJ) == 0);
        }

        internal bool IsText(int iPos)
        {
            return !this.IsOleObject(iPos);
        }

        [DllImport("ole32.dll")]
        private static extern int OleCreateFromData(Imps.Client.Pc.BizControls.IDataObject pSrcDataObj, [In] ref Guid riid, uint renderopt, ref Imps.Client.Pc.BizControls.FORMATETC pFormatEtc, Imps.Client.Pc.BizControls.IOleClientSite pClientSite, Imps.Client.Pc.BizControls.IStorage pStg, [MarshalAs(UnmanagedType.IUnknown)] out object ppvObj);
        [DllImport("ole32.dll")]
        public static extern int OleCreateFromFile([In] ref Guid rclsid, [MarshalAs(UnmanagedType.LPWStr)] string lpszFileName, [In] ref Guid riid, uint renderopt, ref Imps.Client.Pc.BizControls.FORMATETC pFormatEtc, Imps.Client.Pc.BizControls.IOleClientSite pClientSite, Imps.Client.Pc.BizControls.IStorage pStg, [MarshalAs(UnmanagedType.IUnknown)] out object ppvObj);
        [DllImport("ole32.dll")]
        private static extern int OleCreateLinkFromData([MarshalAs(UnmanagedType.Interface)] Imps.Client.Pc.BizControls.IDataObject pSrcDataObj, [In] ref Guid riid, uint renderopt, ref Imps.Client.Pc.BizControls.FORMATETC pFormatEtc, Imps.Client.Pc.BizControls.IOleClientSite pClientSite, Imps.Client.Pc.BizControls.IStorage pStg, [MarshalAs(UnmanagedType.IUnknown)] out object ppvObj);
        [DllImport("ole32.dll")]
        public static extern int OleCreateStaticFromData([MarshalAs(UnmanagedType.Interface)] Imps.Client.Pc.BizControls.IDataObject pSrcDataObj, [In] ref Guid riid, uint renderopt, ref Imps.Client.Pc.BizControls.FORMATETC pFormatEtc, Imps.Client.Pc.BizControls.IOleClientSite pClientSite, Imps.Client.Pc.BizControls.IStorage pStg, [MarshalAs(UnmanagedType.IUnknown)] out object ppvObj);
        [DllImport("ole32.dll")]
        private static extern int OleLoadPicturePath([MarshalAs(UnmanagedType.LPWStr)] string lpszPicturePath, [In, MarshalAs(UnmanagedType.IUnknown)] object pIUnknown, uint dwReserved, uint clrReserved, ref Guid riid, [MarshalAs(UnmanagedType.IUnknown)] out object ppvObj);
        [DllImport("ole32.dll")]
        public static extern int OleSetContainedObject([MarshalAs(UnmanagedType.IUnknown)] object pUnk, bool fContained);
        protected override void OnGotFocus(EventArgs e)
        {
            if ((!base.ReadOnly && base.Enabled) && (base.ImeMode != ImeMode.Disable))
            {
                ControlHelper.TryForceControlImeHangul(this);
            }
            base.OnGotFocus(e);
        }

        private void OnNCPaint(ref System.Windows.Forms.Message m)
        {
            if (((!base.DesignMode && !base.IsDisposed) && (this._borderColor != Color.Empty)) && base.Visible)
            {
                IntPtr hdc = InnerWin32.GetWindowDC(base.Handle);
                using (Graphics graphics = Graphics.FromHdc(hdc))
                {
                    Rectangle r = new Rectangle(base.Location.X, base.Location.Y, base.Width, base.Height);
                    r = base.Parent.RectangleToScreen(r);
                    Rectangle rect = base.RectangleToScreen(base.ClientRectangle);
                    int num = rect.Left - r.Left;
                    if (num > (r.Right - rect.Right))
                    {
                        num = r.Right - rect.Right;
                    }
                    int num2 = rect.Top - r.Top;
                    if (num2 > (r.Bottom - rect.Bottom))
                    {
                        num2 = r.Bottom - rect.Bottom;
                    }
                    rect.X = r.X + num;
                    rect.Y = r.Y + num2;
                    rect.Width = r.Width - (num * 2);
                    rect.Height = r.Height - (num2 * 2);
                    rect.Offset(-r.Left, -r.Top);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -