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);
}
|