Index: class/Managed.Windows.Forms/System.Windows.Forms/XplatUI.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/XplatUI.cs	(revision 74019)
+++ class/Managed.Windows.Forms/System.Windows.Forms/XplatUI.cs	(working copy)
@@ -1049,5 +1049,26 @@
 		public delegate bool ObjectToClipboard(ref int type, object obj, out byte[] data);
 		#endregion	// Delegates
 
+		#region Windows API implementations
+		public static bool WindowsApi_user32_CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight) {
+			return driver.WindowsApi_user32_CreateCaret(hWnd, hBitmap, nWidth, nHeight);
+		}
+
+		public static bool WindowsApi_user32_DestroyCaret() {
+			return driver.WindowsApi_user32_DestroyCaret();
+		}
+
+		public static bool WindowsApi_user32_ShowCaret(IntPtr hWnd) {
+			return driver.WindowsApi_user32_ShowCaret(hWnd);
+		}
+
+		public static bool WindowsApi_user32_HideCaret(IntPtr hWnd) {
+			return driver.WindowsApi_user32_HideCaret(hWnd);
+		}
+
+		public static bool WindowsApi_user32_SetCaretPos(int X, int Y) {
+			return driver.WindowsApi_user32_SetCaretPos(X, Y);
+		}
+		#endregion
 	}
 }
Index: class/Managed.Windows.Forms/System.Windows.Forms/XplatUIDriver.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/XplatUIDriver.cs	(revision 74019)
+++ class/Managed.Windows.Forms/System.Windows.Forms/XplatUIDriver.cs	(working copy)
@@ -323,6 +323,29 @@
 		}
 
 #endregion	// XplatUI Driver Methods
+
+		#region Windows API implementations
+		public virtual bool WindowsApi_user32_CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight) {
+			throw new NotImplementedException();
+		}
+
+		public virtual bool WindowsApi_user32_DestroyCaret() {
+			throw new NotImplementedException();
+		}
+
+		public virtual bool WindowsApi_user32_ShowCaret(IntPtr hWnd) {
+			throw new NotImplementedException();
+		}
+
+		public virtual bool WindowsApi_user32_HideCaret(IntPtr hWnd) {
+			throw new NotImplementedException();
+		}
+
+		public virtual bool WindowsApi_user32_SetCaretPos(int X, int Y) {
+			throw new NotImplementedException();
+		}
+		#endregion
+
 	}
 
 	internal class XplatUIDriverSupport {
Index: class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs	(revision 74019)
+++ class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs	(working copy)
@@ -3131,5 +3131,28 @@
 		[DllImport ("gdi32.dll", EntryPoint="CreateCompatibleBitmap", CallingConvention=CallingConvention.StdCall)]
 		internal static extern IntPtr Win32CreateCompatibleBitmap (IntPtr hdc, int nWidth, int nHeight);
 		#endregion
+
+		#region Windows API implementations
+		public override bool WindowsApi_user32_CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight) {
+			return Win32CreateCaret(hWnd, hBitmap, nWidth, nHeight);
+		}
+
+		public override bool WindowsApi_user32_DestroyCaret() {
+			return Win32DestroyCaret();
+		}
+
+		public override bool WindowsApi_user32_ShowCaret(IntPtr hWnd) {
+			return Win32ShowCaret(hWnd);
+		}
+
+		public override bool WindowsApi_user32_HideCaret(IntPtr hWnd) {
+			return Win32HideCaret(hWnd);
+		}
+
+		public override bool WindowsApi_user32_SetCaretPos(int X, int Y) {
+			return Win32SetCaretPos(X, Y);
+		}
+		#endregion
+
 	}
 }
Index: class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs	(revision 74019)
+++ class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs	(working copy)
@@ -5651,5 +5651,32 @@
 		[DllImport ("libX11")]
 		internal extern static void XPeekEvent (IntPtr display, ref XEvent xevent);
 		#endregion
+
+		#region Windows API implementations
+		public override bool WindowsApi_user32_CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight) {
+			CreateCaret(hWnd, nWidth, nHeight);
+			return true;
+		}
+
+		public override bool WindowsApi_user32_DestroyCaret() {
+			DestroyCaret(Caret.Hwnd);
+			return true;
+		}
+
+		public override bool WindowsApi_user32_ShowCaret(IntPtr hWnd) {
+			CaretVisible(hWnd, true);
+			return true;
+		}
+
+		public override bool WindowsApi_user32_HideCaret(IntPtr hWnd) {
+			CaretVisible(hWnd, false);
+			return true;
+		}
+
+		public override bool WindowsApi_user32_SetCaretPos(int X, int Y) {
+			SetCaretPos(Caret.Hwnd, X, Y);
+			return true;
+		}
+		#endregion
 	}
 }
