CommonDialog.HookProc(IntPtr, Int32, IntPtr, IntPtr) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan prosedur kait kotak dialog umum yang ditimpa untuk menambahkan fungsionalitas tertentu ke kotak dialog umum.
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
Parameter
- hWnd
-
IntPtr
nativeint
Gagang ke jendela kotak dialog.
- msg
- Int32
Pesan yang diterima.
- wparam
-
IntPtr
nativeint
Informasi tambahan tentang pesan.
- lparam
-
IntPtr
nativeint
Informasi tambahan tentang pesan.
Mengembalikan
nativeint
Nilai nol jika prosedur kotak dialog default memproses pesan; nilai bukan nol jika prosedur kotak dialog default mengabaikan pesan.
Contoh
Contoh kode berikut menunjukkan cara mengambil alih HookProc metode . Contohnya terdiri dari kelas yang mewarisi CommonDialog kelas. Dalam HookProc kelas mengambil alih, contoh mengevaluasi parameter msg metode terhadap nilai konstan untuk pesan Windows tertentu. Jika parameter msg sama dengan konstanta yang ditentukan, contoh menulis output jejak yang mengidentifikasi pesan Windows yang diteruskan ke metode HookProc. Contoh ini mengasumsikan bahwa kelas tempat HookProc metode dinyatakan mewarisi CommonDialog kelas.
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
Keterangan
Prosedur kait adalah mekanisme di mana fungsi dapat mencegat peristiwa sebelum mencapai aplikasi. Saat Anda mengambil HookProc alih metode untuk CommonDialog kelas, sistem operasi memanggil penimpaan fungsi Anda untuk memposting pesan sistem operasi ke jendela.
Secara default, prosedur kait mempusatkan kotak dialog di layar sebagai respons terhadap pesan WM_INITDIALOG .
Catatan Bagi Inheritor
Mewarisi kelas dapat mengambil alih metode ini untuk menambahkan fungsionalitas tertentu ke kotak dialog umum. Saat mengambil alih kelas turunan HookProc(IntPtr, Int32, IntPtr, IntPtr) , pastikan untuk memanggil metode kelas HookProc(IntPtr, Int32, IntPtr, IntPtr) dasar.