📄 chatrichtextbox.cs
字号:
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 + -