Maison  >  Article  >  développement back-end  >  Comment utiliser SendMessage en C# ?

Comment utiliser SendMessage en C# ?

零下一度
零下一度original
2017-07-03 17:01:062863parcourir

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 du

contrô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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn