Message.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. //
  2. // System.Drawing.Message.cs
  3. //
  4. // Author:
  5. // Dennis Hayes ([email protected])
  6. //
  7. // (C) 2002 Ximian, Inc. http://www.ximian.com
  8. //
  9. //TODO uncomment and implment GetLParam.
  10. using System;
  11. namespace System.Windows.Forms {
  12. [Serializable]
  13. public struct Message {
  14. private int msg;
  15. private IntPtr hwnd;
  16. private IntPtr lparam;
  17. private IntPtr wparam;
  18. private IntPtr result;
  19. // -----------------------
  20. // Public Shared Members
  21. // -----------------------
  22. /// <summary>
  23. /// Equality Operator
  24. /// </summary>
  25. ///
  26. /// <remarks>
  27. /// Compares two Message objects. The return value is
  28. /// based on the equivalence of the Msg, HWnd, LParam,
  29. /// WParam, and Result properties of the two objects.
  30. /// </remarks>
  31. public static bool operator == (Message msg_a,
  32. Message msg_b) {
  33. return ((msg_a.msg == msg_b.msg) &&
  34. (msg_a.hwnd == msg_b.hwnd) &&
  35. (msg_a.lparam == msg_b.lparam) &&
  36. (msg_a.wparam == msg_b.wparam) &&
  37. (msg_a.result == msg_b.result));
  38. }
  39. /// <summary>
  40. /// Inequality Operator
  41. /// </summary>
  42. ///
  43. /// <remarks>
  44. /// Compares two Message objects. The return value is
  45. /// based on the equivalence of the Msg, HWnd, LParam,
  46. /// WParam, and Result properties of the two objects.
  47. /// </remarks>
  48. public static bool operator != (Message msg_a,
  49. Message msg_b) {
  50. return ((msg_a.msg != msg_b.msg) ||
  51. (msg_a.hwnd != msg_b.hwnd) ||
  52. (msg_a.lparam != msg_b.lparam) ||
  53. (msg_a.wparam != msg_b.wparam) ||
  54. (msg_a.result != msg_b.result));
  55. }
  56. // -----------------------
  57. // Public Instance Members
  58. // -----------------------
  59. public int Msg {
  60. get{
  61. return msg;
  62. }
  63. set{
  64. msg = value;
  65. }
  66. }
  67. public IntPtr HWnd {
  68. get{
  69. return hwnd;
  70. }
  71. set{
  72. hwnd = value;
  73. }
  74. }
  75. public IntPtr LParam {
  76. get{
  77. return lparam;
  78. }
  79. set{
  80. lparam = value;
  81. }
  82. }
  83. public IntPtr WParam {
  84. get{
  85. return wparam;
  86. }
  87. set{
  88. wparam = value;
  89. }
  90. }
  91. public IntPtr Result {
  92. get{
  93. return result;
  94. }
  95. set{
  96. result = value;
  97. }
  98. }
  99. public static Message create(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam)
  100. {
  101. Message NewMessage = new Message();
  102. NewMessage.msg = msg;
  103. NewMessage.wparam = wparam;
  104. NewMessage.lparam = lparam;
  105. NewMessage.hwnd = hWnd;
  106. return NewMessage;
  107. }
  108. /// <summary>
  109. /// Equals Method
  110. /// </summary>
  111. ///
  112. /// <remarks>
  113. /// Checks equivalence of this Message and another object.
  114. /// </remarks>
  115. public override bool Equals (object obj)
  116. {
  117. if (!(obj is Message))
  118. return false;
  119. return (this == (Message) obj);
  120. }
  121. /// <summary>
  122. /// GetHashCode Method
  123. /// </summary>
  124. ///
  125. /// <remarks>
  126. /// Calculates a hashing value.
  127. /// </remarks>
  128. public override int GetHashCode ()
  129. {
  130. return base.GetHashCode();// (int)( msg ^ lparam ^ wparam ^ result ^ whnd);
  131. }
  132. /// <summary>
  133. /// ToString Method
  134. /// </summary>
  135. ///
  136. /// <remarks>
  137. /// Formats the Message as a string.
  138. /// </remarks>
  139. public override string ToString ()
  140. {
  141. return String.Format ("[{0},{1},{2},{3},{4}]", msg.ToString(), lparam.ToString(), wparam.ToString(), result.ToString(), hwnd.ToString());
  142. }
  143. // public object GetLParam(Type cls){
  144. // // throw new NotImplementedException ();
  145. // //return (object) lparam;
  146. // }
  147. }
  148. }