1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 // Copyright (c) 2004 Novell, Inc.
23 // Peter Bartok pbartok@novell.com
31 namespace System.Windows.Forms {
32 internal abstract class XplatUIDriver {
33 internal abstract IntPtr InitializeDriver();
34 internal abstract void ShutdownDriver(IntPtr token);
35 internal delegate IntPtr WndProc(IntPtr hwnd, Msg msg, IntPtr wParam, IntPtr lParam);
38 #region XplatUI Driver Properties
39 internal virtual Color ForeColor {
41 return ThemeEngine.Current.DefaultWindowForeColor;
45 internal virtual Color BackColor {
47 return ThemeEngine.Current.DefaultWindowBackColor;
51 internal virtual Font Font {
53 return ThemeEngine.Current.DefaultFont;
57 internal virtual Keys ModifierKeys {
63 internal virtual MouseButtons MouseButtons {
65 return MouseButtons.None;
69 internal virtual Point MousePosition {
75 internal virtual bool DropTarget {
84 internal abstract Size CursorSize { get; }
85 internal abstract bool DragFullWindows { get; }
86 internal abstract Size DragSize { get; }
87 internal abstract Size IconSize { get; }
88 internal abstract Size MaxWindowTrackSize { get; }
89 internal abstract Size MinimizedWindowSize { get; }
90 internal abstract Size MinimizedWindowSpacingSize { get; }
91 internal abstract Size MinimumWindowSize { get; }
92 internal abstract Size MinWindowTrackSize { get; }
93 internal abstract Size SmallIconSize { get; }
94 internal abstract int MouseButtonCount { get; }
95 internal abstract bool MouseButtonsSwapped { get; }
96 internal abstract bool MouseWheelPresent { get; }
97 internal abstract Rectangle VirtualScreen { get; }
98 internal abstract Rectangle WorkingArea { get; }
99 #endregion // XplatUI Driver Properties
101 internal abstract event EventHandler Idle;
103 #region XplatUI Driver Methods
104 internal abstract void Exit();
106 internal abstract void EnableThemes();
108 internal abstract void GetDisplaySize(out Size size);
110 internal abstract IntPtr CreateWindow(CreateParams cp);
111 internal abstract IntPtr CreateWindow(IntPtr Parent, int X, int Y, int Width, int Height);
112 internal abstract void DestroyWindow(IntPtr handle);
114 internal abstract FormWindowState GetWindowState(IntPtr handle);
115 internal abstract void SetWindowState(IntPtr handle, FormWindowState state);
117 internal abstract void SetWindowStyle(IntPtr handle, CreateParams cp);
118 internal abstract void SetBorderStyle(IntPtr handle, BorderStyle border_style);
119 internal abstract void SetMenu(IntPtr handle, IntPtr menu_handle);
121 internal abstract bool GetText(IntPtr handle, out string text);
122 internal abstract bool Text(IntPtr handle, string text);
123 internal abstract bool SetVisible(IntPtr handle, bool visible);
124 internal abstract bool IsVisible(IntPtr handle);
125 internal abstract IntPtr SetParent(IntPtr handle, IntPtr parent);
126 internal abstract IntPtr GetParent(IntPtr handle);
128 internal abstract void UpdateWindow(IntPtr handle);
129 internal abstract void SetWindowBackground(IntPtr handle, Color color);
130 internal abstract PaintEventArgs PaintEventStart(IntPtr handle);
131 internal abstract void PaintEventEnd(IntPtr handle);
133 internal abstract void SetWindowPos(IntPtr handle, int x, int y, int width, int height);
134 internal abstract void GetWindowPos(IntPtr handle, bool is_toplevel, out int x, out int y, out int width, out int height, out int client_width, out int client_height);
135 internal abstract void Activate(IntPtr handle);
136 internal abstract void EnableWindow(IntPtr handle, bool Enable);
137 internal abstract void SetModal(IntPtr handle, bool Modal);
138 internal abstract void Invalidate(IntPtr handle, Rectangle rc, bool clear);
139 internal abstract IntPtr DefWndProc(ref Message msg);
140 internal abstract void HandleException(Exception e);
141 internal abstract void DoEvents();
142 internal abstract bool PeekMessage(ref MSG msg, IntPtr hWnd, int wFilterMin, int wFilterMax, uint flags);
143 internal abstract bool GetMessage(ref MSG msg, IntPtr hWnd, int wFilterMin, int wFilterMax);
144 internal abstract bool TranslateMessage(ref MSG msg);
145 internal abstract IntPtr DispatchMessage(ref MSG msg);
147 internal abstract bool SetZOrder(IntPtr hWnd, IntPtr AfterhWnd, bool Top, bool Bottom);
148 internal abstract bool SetTopmost(IntPtr hWnd, IntPtr hWndOwner, bool Enabled);
150 internal abstract bool CalculateWindowRect(IntPtr hWnd, ref Rectangle ClientRect, int Style, int ExStyle, IntPtr MenuHandle, out Rectangle WindowRect);
152 internal abstract void SetCursor(IntPtr hwnd, IntPtr cursor);
153 internal abstract void ShowCursor(bool show);
154 internal abstract void OverrideCursor(IntPtr cursor);
155 internal abstract IntPtr DefineCursor(Bitmap bitmap, Bitmap mask, Color cursor_pixel, Color mask_pixel, int xHotSpot, int yHotSpot);
156 internal abstract IntPtr DefineStdCursor(StdCursor id);
157 internal abstract void DestroyCursor(IntPtr cursor);
158 internal abstract void GetCursorInfo(IntPtr cursor, out int width, out int height, out int hotspot_x, out int hotspot_y);
160 internal abstract void GetCursorPos(IntPtr hwnd, out int x, out int y);
161 internal abstract void SetCursorPos(IntPtr hwnd, int x, int y);
163 internal abstract void ScreenToClient(IntPtr hwnd, ref int x, ref int y);
164 internal abstract void ClientToScreen(IntPtr hwnd, ref int x, ref int y);
166 internal abstract void GrabWindow(IntPtr hwnd, IntPtr ConfineToHwnd);
167 internal abstract void GrabInfo(out IntPtr hwnd, out bool GrabConfined, out Rectangle GrabArea);
168 internal abstract void UngrabWindow(IntPtr hwnd);
170 internal abstract void SendAsyncMethod (AsyncMethodData method);
171 internal abstract void SetTimer (Timer timer);
172 internal abstract void KillTimer (Timer timer);
174 internal abstract void CreateCaret(IntPtr hwnd, int width, int height);
175 internal abstract void DestroyCaret(IntPtr hwnd);
176 internal abstract void SetCaretPos(IntPtr hwnd, int x, int y);
177 internal abstract void CaretVisible(IntPtr hwnd, bool visible);
179 internal abstract void SetFocus(IntPtr hwnd);
180 internal abstract IntPtr GetActive();
182 internal abstract void ScrollWindow(IntPtr hwnd, Rectangle rectangle, int XAmount, int YAmount, bool with_children);
183 internal abstract void ScrollWindow(IntPtr hwnd, int XAmount, int YAmount, bool with_children);
185 internal abstract bool GetFontMetrics(Graphics g, Font font, out int ascent, out int descent);
187 internal abstract bool SystrayAdd(IntPtr hwnd, string tip, Icon icon, out ToolTip tt);
188 internal abstract bool SystrayChange(IntPtr hwnd, string tip, Icon icon, ref ToolTip tt);
189 internal abstract void SystrayRemove(IntPtr hwnd, ref ToolTip tt);
191 internal abstract Graphics GetMenuDC(IntPtr hwnd, IntPtr ncpaint_region);
192 internal abstract Point GetMenuOrigin(IntPtr hwnd);
193 internal abstract void ReleaseMenuDC(IntPtr hwnd, Graphics dc);
194 internal abstract void MenuToScreen(IntPtr hwnd, ref int x, ref int y);
195 internal abstract void ScreenToMenu(IntPtr hwnd, ref int x, ref int y);
197 internal abstract void SetIcon(IntPtr handle, Icon icon);
199 internal abstract void EraseWindowBackground(IntPtr handle, IntPtr wParam);
201 // System information
202 internal abstract int KeyboardSpeed { get; }
203 internal abstract int KeyboardDelay { get; }
205 #endregion // XplatUI Driver Methods