En C#, le pilote utilisé par le programme est piloté par les événements au lieu du pilote d'origine piloté par les messages. Bien que les événements fournis par le framework .net soient déjà très riches, les messages riches définis dans le système précédent ont un grand impact. sur le système Programmation fournit une méthode de mise en œuvre pratique, donc l'utilisation de messages en C# peut parfois améliorer considérablement l'efficacité de la programmation.
1 Définir le message
En c#, le message doit être défini comme le nombre hexadécimal d'origine dans le système Windows, tel que
const int WM_Lbutton = 0x201 ; /défini Cliquez sur le message avec le bouton gauche de la souris
public const int USER = 0x0400 // C'est un message utilisateur défini par le système windows
2 Envoi de message
Envoi de messages Il est implémenté via la fonction API SendMessage fournie par Windows Son prototype est défini comme
[DllImport("User32.dll",EntryPoint="SendMessage")] private static extern int SendMessage( int hWnd, // handle to destination window int Msg, // message int wParam, // first message parameter int lParam // second message parameter );
3 Acceptation des messages
En C#, toute fenêtre a une fonction de réception et de traitement des messages, qui est la fonction defproc
Vous pouvez surcharger cette fonction dans le formulaire pour traiter le message
protected override void DefWndProc ( ref System.WinForms.Message m ) { switch(m.msg) { case WM_Lbutton : ///string与MFC中的CString的Format函数的使用方法有所不同 string message = string.Format("收到消息!参数为:{0},{1}",m.wParam,m.lParam); MessageBox.Show(message);///显示一个消息框 break; default: base.DefWndProc(ref m);///调用基类函数处理非自定义消息。 break; } }
En fait, en C# L'événement est également implémenté en encapsulant les messages système. Si vous ne traitez pas le
dans la fonction DefWndProc, alors il sera transmis au système pour traiter le message. , et le système gérera le clic de la souris via une fonction proxy, vous pourrez donc intercepter les messages via la fonction
defproc, par exemple, si vous souhaitez intercepter le message de clic d'un bouton
4 Autres méthodes de traitement des messages en C# En C#, il est parfois nécessaire de prétraiter les messages ducontrôle Par exemple, si vous utilisez le contrôle tableur d'owc. pour traiter les fichiers Excel, vous ne voulez pas que les utilisateurs puissent sélectionner Modifier les données, vous pouvez bloquer les événements de la souris. A ce moment, vous devez intercepter les événements prédéfinis par le système (ceci. est appelé sous-classe dans MFC). Vous pouvez utiliser une interface fournie par C#
IMessageFilter pour implémenter le filtrage des messages
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!