Windows   发布时间:2022-05-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了windows消息处理机制大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。

消息内容包括:
hwnd
32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑框等)。
message
用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。
wParam
通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。
lParam
通常是一个指向内存中数据的指针。
由于WParam、lParam和Pointer都是32位的,即等同于DWORD。因此,它们之间可以相互转换。

对于WinForm和WPF应用,以检测U盘插拔为例,记录windows消息接收处理:

public const int WM_DEVICECHANGE = @H_301_29@0x219;  //U盘插入后,OS的底层会自动检测到,然后向应用程序发送“硬件设备状态改变“的消息
public const int DBT_DEVICEARRIVAL = @H_301_29@0x8000; //U盘插入  
public const int DBT_DEVICEREMOVECOMPLETE = @H_301_29@0x8004; //U盘卸载

Winform:

protected override void WndProc(ref message m)
{
    if (m.Msg == WM_DEVICECHANGE)
    {
        switch (m.WParam.ToInt32())
        {

            case DBT_DEVICEARRIVAL://U盘插入  
                //
                break;

            case DBT_DEVICEREMOVECOMPLETE: //U盘卸载
                //
                break;

            default:
                break;
        }
    }
    base.WndProc(ref m);
}

WPF窗体中未实现WndProc函数,需要Hwnd@R_944_9016@e对象添加消息处理回调函数。

private void MainWindow_Loaded(object sender,RoutedEventArgs E)
{
    Hwnd@R_944_9016@e hwnd@R_944_9016@e = Presentation@R_944_9016@e.FromVisual(this) as Hwnd@R_944_9016@e;
    if (hwnd@R_944_9016@e != null)
    {
        hwnd@R_944_9016@e.AddHook(new Hwnd@R_944_9016@eHook(WndProC));
    }
}

private IntPtr WndProc(IntPtr hwnd,int msg,IntPtr wParam,IntPtr lParam,ref bool handled)
{

    if (msg == WM_DEVICECHANGE)
    {
        switch (wParam.ToInt32())
        {

            case DBT_DEVICEARRIVAL://U盘插入  
                //
                break;

            case DBT_DEVICEREMOVECOMPLETE: //U盘卸载
                //
                break;

            default:
                break;
        }
    }
    return IntPtr.Zero;
}

通过类似写法,使用WPF或WinForm处理其他消息。

消息机制参http://www.cppblog.com/suiaiguo/archive/2009/07/18/90412.html

消息大全参https://blog.csdn.net/nupt123456789/article/details/7370562

大佬总结

以上是大佬教程为你收集整理的windows消息处理机制全部内容,希望文章能够帮你解决windows消息处理机制所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:消息