* TreeView.cs: Don't draw the selected node when we lose
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / Message.cs
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:
8 // 
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
11 // 
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.
19 //
20 // Copyright (c) 2004 Novell, Inc.
21 //
22 // Authors:
23 //      Peter Bartok    pbartok@novell.com
24
25
26 // COMPLETE
27
28 using System; 
29 using System.Runtime.InteropServices;
30 using System.Text;
31 using System.Diagnostics;
32
33 namespace System.Windows.Forms {
34         public struct Message {
35                 private int     msg;
36                 private IntPtr  hwnd;
37                 private IntPtr  lParam;
38                 private IntPtr  wParam;
39                 private IntPtr  result;
40
41                 #region Public Instance Properties
42                 public IntPtr HWnd {
43                         get { return hwnd; }
44                         set { hwnd=value; }
45                 }
46
47                 public IntPtr LParam {
48                         get { return lParam; }
49                         set { lParam=value; }
50                 }
51
52                 public int Msg {
53                         get { return msg; }
54                         set { msg=value; }
55                 }
56
57                 public IntPtr Result {
58                         get { return result; }
59                         set { result=value; }
60                 }
61
62                 public IntPtr WParam {
63                         get { return wParam; }
64                         set { wParam=value; }
65                 }
66                 #endregion      // Public Instance Properties
67
68                 #region Public Static Methods
69                 public static Message Create(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam) {
70                         Message new_message = new Message();
71
72                         new_message.msg=msg;
73                         new_message.hwnd=hWnd;
74                         new_message.wParam=wparam;
75                         new_message.lParam=lparam;
76                         return new_message;
77                 }
78                 #endregion      // Public Static Methods
79
80                 #region Public Instance Methods
81                 public override bool Equals(object o) {
82                         if (!(o is Message)) {
83                                 return false;
84                         }
85
86                         return ((this.msg == ((Message)o).msg) && 
87                                 (this.hwnd == ((Message)o).hwnd) && 
88                                 (this.lParam == ((Message)o).lParam) && 
89                                 (this.wParam == ((Message)o).wParam) && 
90                                 (this.result == ((Message)o).result));
91                 }
92
93                 public override int GetHashCode() {
94                         return base.GetHashCode();
95                 }
96
97                 public object GetLParam(Type cls) {
98                         object o = Marshal.PtrToStructure(this.lParam, cls);
99                         
100                         return(o);
101                 }
102
103                 public override string ToString() {
104                         return String.Format("[{0} {1} {2} {3}]", msg.ToString(), lParam.ToString(), wParam.ToString(), hwnd.ToString());
105                 }
106                 #endregion      // Public Instance Methods
107         }
108 }