CommonDialog.HookProc(IntPtr, Int32, IntPtr, IntPtr) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Ortak bir iletişim kutusuna belirli işlevler eklemek için geçersiz kılınan ortak iletişim kutusu kanca yordamını tanımlar.
protected:
virtual IntPtr HookProc(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam);
protected virtual IntPtr HookProc (IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam);
abstract member HookProc : nativeint * int * nativeint * nativeint -> nativeint
override this.HookProc : nativeint * int * nativeint * nativeint -> nativeint
Protected Overridable Function HookProc (hWnd As IntPtr, msg As Integer, wparam As IntPtr, lparam As IntPtr) As IntPtr
Parametreler
- hWnd
-
IntPtr
nativeint
İletişim kutusu penceresinin tutamacı.
- msg
- Int32
Alınan ileti.
- wparam
-
IntPtr
nativeint
İleti hakkında ek bilgi.
- lparam
-
IntPtr
nativeint
İleti hakkında ek bilgi.
Döndürülenler
-
IntPtr
nativeint
Varsayılan iletişim kutusu yordamı iletiyi işlerse sıfır değeri; varsayılan iletişim kutusu yordamı iletiyi yoksayarsa sıfır olmayan bir değer.
Örnekler
Aşağıdaki kod örneği, yönteminin nasıl geçersiz kılınduğunu HookProc gösterir. Örnek, sınıfını devralan bir sınıftan CommonDialog oluşur. Sınıfın HookProc geçersiz kılmasında, örnek yöntemin msg
parametresini belirli Windows iletileri için sabit değerlere karşı değerlendirir. Parametre belirtilen sabite msg
eşitse, örnek yöntemine geçirilen Windows iletisini tanımlayan izleme çıktısı HookProc yazar. Bu örnekte, yönteminin bildirildiği sınıfın HookProc sınıfı devraldığı CommonDialog varsayılır.
private:
// Defines the constants for Windows messages.
literal int WM_SETFOCUS = 0x0007;
literal int WM_INITDIALOG = 0x0110;
literal int WM_LBUTTONDOWN = 0x0201;
literal int WM_RBUTTONDOWN = 0x0204;
literal int WM_MOVE = 0x0003;
protected:
// Overrides the base class hook procedure...
[SecurityPermission(SecurityAction::Demand, Flags=SecurityPermissionFlag::UnmanagedCode)]
virtual IntPtr HookProc( IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam ) override
{
// Evaluates the message parameter to determine the user action.
#if defined(TRACE)
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;
}
#endif
// Always call the base class hook procedure.
return FontDialog::HookProc( hWnd, msg, wParam, lParam );
}
// 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...
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);
}
' Defines the constants for Windows messages.
Const WM_SETFOCUS = &H7
Const WM_INITDIALOG = &H110
Const WM_LBUTTONDOWN = &H201
Const WM_RBUTTONDOWN = &H204
Const WM_MOVE = &H3
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Function HookProc(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
' Evaluates the message parameter to determine the user action.
Select Case msg
Case WM_INITDIALOG
System.Diagnostics.Trace.Write("The WM_INITDIALOG message was received.")
Case WM_SETFOCUS
System.Diagnostics.Trace.Write("The WM_SETFOCUS message was received.")
Case WM_LBUTTONDOWN
System.Diagnostics.Trace.Write("The WM_LBUTTONDOWN message was received.")
Case WM_RBUTTONDOWN
System.Diagnostics.Trace.Write("The WM_RBUTTONDOWN message was received.")
Case WM_MOVE
System.Diagnostics.Trace.Write("The WM_MOVE message was received.")
End Select
' Always call the base class hook procedure.
Return MyBase.HookProc(hWnd, msg, wParam, lParam)
End Function
Açıklamalar
Kanca yordamı, bir işlevin bir uygulamaya ulaşmadan önce olayları kesebildiği bir mekanizmadır. Bir CommonDialog sınıf için yöntemini geçersiz kıldığınızdaHookProc, işletim sistemi, pencereye işletim sistemi iletileri göndermek için işlevi geçersiz kılmanızı çağırır.
Varsayılan olarak, kanca yordamı bir iletiye WM_INITDIALOG
yanıt olarak ekrandaki iletişim kutusunu ortalar.
Devralanlara Notlar
Sınıfları devralmak, ortak bir iletişim kutusuna belirli işlevler eklemek için bu yöntemi geçersiz kılabilir. Türetilmiş bir sınıfta geçersiz kılma HookProc(IntPtr, Int32, IntPtr, IntPtr) sırasında temel sınıfın HookProc(IntPtr, Int32, IntPtr, IntPtr) yöntemini çağırdığınızdan emin olun.