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

📄 chatrichtextbox.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 3 页
字号:
                    r.Offset(-r.Left, -r.Top);
                    graphics.ExcludeClip(rect);
                    using (Brush brush = new SolidBrush(this.BackColor))
                    {
                        graphics.FillRectangle(brush, r);
                    }
                    using (Pen pen = new Pen(this._borderColor))
                    {
                        r.Width--;
                        r.Height--;
                        graphics.DrawRectangle(pen, r);
                    }
                }
                InnerWin32.ReleaseDC(base.Handle, hdc);
                m.Result = IntPtr.Zero;
            }
        }

        [DllImport("User32.dll", CharSet=CharSet.Auto, PreserveSig=false)]
        public static extern IRichEditOle SendMessage(IntPtr hWnd, int message, int wParam);
        [DllImport("user32.dll", CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
        [DllImport("user32", CharSet=CharSet.Auto)]
        private static extern int SendMessage(HandleRef hWnd, int msg, int wParam, ref PARAFORMAT lp);
        [DllImport("user32", CharSet=CharSet.Auto)]
        private static extern int SendMessage(HandleRef hWnd, int msg, int wParam, int lParam);
        [DllImport("user32", CharSet=CharSet.Auto)]
        private static extern int SendMessage(HandleRef hWnd, int msg, int wParam, ref CHARFORMAT lp);
        [DllImport("user32.dll", EntryPoint="SendMessage", CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage1(IntPtr hwnd, int wMsg, bool wParam, bool lParam);
        [DllImport("user32.dll", EntryPoint="SendMessage", CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage1(IntPtr hwnd, int wMsg, bool wParam, string lParam);
        [DllImport("user32.dll", EntryPoint="SendMessage", CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage1(IntPtr hwnd, int wMsg, int wParam, ref tagTextRange lParam);
        [DllImport("user32.dll", EntryPoint="SendMessage", CharSet=CharSet.Auto)]
        public static extern IntPtr SendMessage1(IntPtr hwnd, int wMsg, int wParam, [MarshalAs(UnmanagedType.IUnknown)] out IRichEditOle lParam);
        public void SetSelectionLink(bool link)
        {
            this.SetSelectionStyle(0x20, link ? 0x20 : 0);
        }

        private void SetSelectionStyle(uint mask, uint effect)
        {
            CHARFORMAT2_STRUCT structure = new CHARFORMAT2_STRUCT();
            structure.cbSize = (uint) Marshal.SizeOf(structure);
            structure.dwMask = mask;
            structure.dwEffects = effect;
            IntPtr wParam = new IntPtr(1);
            IntPtr ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf(structure));
            Marshal.StructureToPtr(structure, ptr, false);
            SendMessage(base.Handle, 0x444, wParam, ptr);
            Marshal.FreeCoTaskMem(ptr);
        }

        public void SetWindowStyle()
        {
            IntPtr handle = base.Handle;
            int windowLong = (int) win32api_wrapper.GetWindowLong(base.Handle, -16);
            windowLong |= 0x50011004;
            win32api_wrapper.SetWindowLong(base.Handle, -16, (IntPtr) windowLong);
        }

        public bool UpadteProgressBar(int index, int iPos, string text, bool bShowBar)
        {
            REOBJECT reobject = this.GetObject(index);
            if (reobject == null)
            {
                return false;
            }
            IDynGifCtl objectForIUnknown = (IDynGifCtl) Marshal.GetObjectForIUnknown(reobject.poleobj);
            int num = 0;
            if (bShowBar)
            {
                num = 1;
            }
            else
            {
                num = 0;
            }
            objectForIUnknown.UpdateProgressBar(text, iPos, num);
            return true;
        }

        public bool UpdateImage(int index, AmigoImage image, DrawImageMethod drawMethod)
        {
            REOBJECT reobject = this.GetObject(index);
            if (reobject == null)
            {
                return false;
            }
            IDynGifCtl objectForIUnknown = (IDynGifCtl) Marshal.GetObjectForIUnknown(reobject.poleobj);
            Bitmap bitmap = new Bitmap(image.Image);
            BitmapData bitmapdata = null;
            try
            {
                bitmapdata = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
                if (drawMethod == DrawImageMethod.DrawByFireViewChange)
                {
                    objectForIUnknown.PlayImageFromBitmapData4(bitmapdata.Scan0.ToInt32(), bitmapdata.Stride * bitmap.Height, bitmap.Width, bitmap.Height);
                }
                else if (drawMethod == DrawImageMethod.DrawByInvalidateRect)
                {
                    objectForIUnknown.PlayImageFromBitmapData5(base.Handle.ToInt32(), bitmapdata.Scan0.ToInt32(), bitmapdata.Stride * bitmap.Height, bitmap.Width, bitmap.Height);
                }
            }
            catch (Exception exception)
            {
                ClientLogger.WriteException(exception);
                return false;
            }
            finally
            {
                if (bitmapdata != null)
                {
                    bitmap.UnlockBits(bitmapdata);
                }
                bitmap.Dispose();
            }
            return true;
        }

        internal bool UpdateOleSize(int index, Size size)
        {
            int x;
            int y;
            IDynGifCtl objectForIUnknown = (IDynGifCtl) Marshal.GetObjectForIUnknown(this.GetObject(index).poleobj);
            objectForIUnknown.GetSize(size.Width, size.Height, out x, out y);
            Imps.Client.Pc.BizControls.IOleObject obj2 = (Imps.Client.Pc.BizControls.IOleObject) objectForIUnknown;
            Size pSizel = new Size(x, y);
            obj2.SetExtent(1, ref pSizel);
            objectForIUnknown.RefreshUI();
            return true;
        }

        protected override void WndProc(ref System.Windows.Forms.Message m)
        {
            try
            {
                int msg = m.Msg;
                switch (msg)
                {
                    case 0x85:
                        if (this._borderColor == Color.Empty)
                        {
                            break;
                        }
                        base.WndProc(ref m);
                        this.OnNCPaint(ref m);
                        return;

                    case 270:
                        base.WndProc(ref m);
                        base.OnTextChanged(null);
                        return;

                    default:
                        if ((msg == 0x205) && this.DoMouseUp(ref m))
                        {
                            return;
                        }
                        break;
                }
                base.WndProc(ref m);
            }
            catch (Exception exception)
            {
                ClientLogger.WriteGeneral("ChatRichTextBox", exception.ToString(), 10);
            }
        }

        public Color BorderColor
        {
            get
            {
                return this._borderColor;
            }
            set
            {
                if (value != this._borderColor)
                {
                    this._borderColor = value;
                    if ((base.IsHandleCreated && !base.IsDisposed) && !base.DesignMode)
                    {
                        win32api_wrapper.SendMessage(base.Handle, 0x85, (IntPtr) 1, IntPtr.Zero);
                    }
                }
            }
        }

        [StructLayout(LayoutKind.Sequential)]
        public struct CHARFORMAT
        {
            public int cbSize;
            public uint dwMask;
            public uint dwEffects;
            public int yHeight;
            public int yOffset;
            public int crTextColor;
            public byte bCharSet;
            public byte bPitchAndFamily;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst=0x20)]
            public char[] szFaceName;
            public short wWeight;
            public short sSpacing;
            public int crBackColor;
            public uint lcid;
            public uint dwReserved;
            public short sStyle;
            public short wKerning;
            public byte bUnderlineType;
            public byte bAnimation;
            public byte bRevAuthor;
            public byte bReserved1;
        }

        [StructLayout(LayoutKind.Sequential)]
        private struct CHARFORMAT2_STRUCT
        {
            public uint cbSize;
            public uint dwMask;
            public uint dwEffects;
            public int yHeight;
            public int yOffset;
            public int crTextColor;
            public byte bCharSet;
            public byte bPitchAndFamily;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst=0x20)]
            public char[] szFaceName;
            public ushort wWeight;
            public ushort sSpacing;
            public int crBackColor;
            public int lcid;
            public int dwReserved;
            public short sStyle;
            public short wKerning;
            public byte bUnderlineType;
            public byte bAnimation;
            public byte bRevAuthor;
            public byte bReserved1;
        }

        [StructLayout(LayoutKind.Sequential)]
        public struct PARAFORMAT
        {
            public int cbSize;
            public uint dwMask;
            public short wNumbering;
            public short wReserved;
            public int dxStartIndent;
            public int dxRightIndent;
            public int dxOffset;
            public short wAlignment;
            public short cTabCount;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst=0x20)]
            public int[] rgxTabs;
            public int dySpaceBefore;
            public int dySpaceAfter;
            public int dyLineSpacing;
            public short sStyle;
            public byte bLineSpacingRule;
            public byte bOutlineLevel;
            public short wShadingWeight;
            public short wShadingStyle;
            public short wNumberingStart;
            public short wNumberingStyle;
            public short wNumberingTab;
            public short wBorderSpace;
            public short wBorderWidth;
            public short wBorders;
        }

        [StructLayout(LayoutKind.Sequential)]
        public struct SETTEXTEX
        {
            public uint flags;
            public ushort codepage;
        }

        [StructLayout(LayoutKind.Sequential)]
        public struct tagTextRange
        {
            public Imps.Client.Pc.BizControls.CHARRANGE chrg;
            public string Text;
        }
    }
}

⌨️ 快捷键说明

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