Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich SendMessage in C#?

Wie verwende ich SendMessage in C#?

零下一度
零下一度Original
2017-07-03 17:01:062863Durchsuche

In C# ist der vom Programm verwendete Treiber ereignisgesteuert und nicht der ursprüngliche nachrichtengesteuerte. Obwohl die vom .net-Framework bereitgestellten Ereignisse bereits sehr umfangreich sind, haben die im vorherigen System definierten umfangreichen Nachrichten negative Auswirkungen Auf dem System bietet Programmierung eine praktische Implementierungsmethode, sodass die Verwendung von Nachrichten in C# manchmal die Effizienz der Programmierung erheblich verbessern kann.

 1 Definieren Sie die Nachricht

In c# muss die Nachricht als die ursprüngliche Hexadezimalzahl im Windows-System definiert werden, z. B.

const int WM_Lbutton = 0x201; /definiert Klicken Sie mit der linken Maustaste auf die Nachricht

public const int USER = 0x0400 // Es handelt sich um eine vom Windows-System definierte Benutzernachricht


2 Nachrichtenversand


Nachrichtenversand Wird über die von Windows bereitgestellte API-Funktion SendMessage implementiert. Sein Prototyp ist definiert als

 [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 Nachrichtenannahme

In C# verfügt jedes Fenster über eine Funktion zum Empfangen und Verarbeiten von Nachrichten, nämlich die Funktion defproc

Sie können diese Funktion im Formular überladen, um die Nachricht zu verarbeiten

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;
}
}
Tatsächlich wird das Ereignis in C# auch durch Kapselung von Systemnachrichten implementiert. Wenn Sie das

nicht in der DefWndProc-Funktion verarbeiten, wird es an das System übergeben, um die Nachricht zu verarbeiten , und das System verarbeitet den Mausklick über eine Proxy-Funktion, sodass Sie Nachrichten über die Funktion

defproc abfangen können, wenn Sie beispielsweise die Klicknachricht einer Schaltfläche

4 Andere Nachrichtenverarbeitungsmethoden in C#

In C# ist es manchmal notwendig, die Nachrichten des

-Steuerelements

vorzuverarbeiten, beispielsweise wenn Sie das Tabellenkalkulationssteuerelement von owc verwenden Um Excel-Dateien zu verarbeiten, möchten Sie nicht, dass Benutzer

IMessageFilter verwenden, um die Nachrichtenfilterung zu implementieren

Das obige ist der detaillierte Inhalt vonWie verwende ich SendMessage in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn