| CommonDialog.HookProc 方法 命名空间:System.Windows.Forms
 C#
 protected virtual IntPtr HookProc (
 IntPtr hWnd,
 int msg,
 IntPtr wparam,
 IntPtr lparam
 )
 
 参数
 hWnd
 对话框窗口的句柄。
 
 msg
 正在接收的消息。
 
 wparam
 关于消息的附加信息。
 
 lparam
 关于消息的附加信息。
 
 下面的代码示例演示如何重写 HookProc 方法。此示例由继承 CommonDialog 类的类组成。在该类的 HookProc 重写中,示例根据特定的 Windows 消息的常数值来计算方法的 msg 参数。如果 msg 参数等于指定的常数,则示例写入跟踪输出(它标识被传递到 HookProc 方法的 Windows 消息)。此示例假定在其中声明 HookProc 方法的类继承 CommonDialog 类。
 
 // Defines the constants for Windows messages.
 const int WM_SETFOCUS = 0x0007;
 const int WM_INITDIALOG = 0x0110;
 const int WM_LBUTTONDOWN = 0x0201;
 const int WM_RBUTTONDOWN = 0x0204;
 const int WM_MOVE = 0x0003;
 // Overrides the base class hook procedure...
 [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
 protected override IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam)
 {
 // Evaluates the message parameter to determine the user action.
 switch(msg)
 {
 case WM_INITDIALOG:
 System.Diagnostics.Trace.Write("The WM_INITDIALOG message was received.");
 break;
 case WM_SETFOCUS:
 System.Diagnostics.Trace.Write("The WM_SETFOCUS message was received.");
 break;
 case WM_LBUTTONDOWN:
 System.Diagnostics.Trace.Write("The WM_LBUTTONDOWN message was received.");
 break;
 case WM_RBUTTONDOWN:
 System.Diagnostics.Trace.Write("The WM_RBUTTONDOWN message was received.");
 break;
 case WM_MOVE:
 System.Diagnostics.Trace.Write("The WM_MOVE message was received.");
 break;
 }
 // Always call the base class hook procedure.
 return base.HookProc(hWnd, msg, wParam, lParam);
 }
 
 |