* Test/System.Windows.Forms/DataGridViewCellTest.cs: Added
[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                 
79 #if NET_2_0
80                 public static bool operator == (Message m1, Message m2)
81                 {
82                         return (m1.hwnd == m2.hwnd) && (m1.lParam == m2.lParam) && (m1.msg == m2.msg) && (m1.result == m2.result) && (m1.wParam == m2.wParam);
83                 }
84
85                 public static bool operator != (Message m1, Message m2)
86                 {
87                         return !(m1 == m2);
88                 }
89 #endif
90                 #endregion      // Public Static Methods
91
92                 #region Public Instance Methods
93                 public override bool Equals(object o) {
94                         if (!(o is Message)) {
95                                 return false;
96                         }
97
98                         return ((this.msg == ((Message)o).msg) && 
99                                 (this.hwnd == ((Message)o).hwnd) && 
100                                 (this.lParam == ((Message)o).lParam) && 
101                                 (this.wParam == ((Message)o).wParam) && 
102                                 (this.result == ((Message)o).result));
103                 }
104
105                 public override int GetHashCode() {
106                         return base.GetHashCode();
107                 }
108
109                 public object GetLParam(Type cls) {
110                         object o = Marshal.PtrToStructure(this.lParam, cls);
111                         
112                         return(o);
113                 }
114
115                 public override string ToString() {
116                         return String.Format ("msg=0x{0:x} ({1}) hwnd=0x{2:x} wparam=0x{3:x} lparam=0x{4:x} result=0x{5:x}", msg, ((Msg) msg).ToString (), hwnd.ToInt32 (), wParam.ToInt32 (), lParam.ToInt32 (), result.ToInt32 ());
117                 }
118                 #endregion      // Public Instance Methods
119         }
120 }