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 );
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; } }
4 Andere Nachrichtenverarbeitungsmethoden in C#
In C# ist es manchmal notwendig, die Nachrichten des
-Steuerelementsvorzuverarbeiten, 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 implementierenDas 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!