美文网首页
用HANDLE_MSG让代码更清晰

用HANDLE_MSG让代码更清晰

作者: 晓川君 | 来源:发表于2017-06-27 17:13 被阅读0次

最近接手了一个Win32软件项目,其中涉及到大量消息的响应,通篇都是这样的代码

    switch (msg)
    {
        case WM_CREATE:
            //code A
            break;
        case WM_COMMAND:
            //code B
            break;
        //case ...
        //case ....
        case WM_EXIT:
            //code N
            break;
        default:
            break;
    }

每种消息响应都离不开wParam和lParam两个参数,而对于不同的系统消息,两个参数的意义完全不同。对于不熟悉消息内容的人,这样的代码很难阅读和维护,而且复杂的switch-case结构看起来也很难受。幸运的是,windows已经通过宏定义HANDLE_MSG将消息和消息响应函数对应了起来。HANDLE_MSG使开发者只需要如何关心处理消息,不再需要不停的查MSDN啦。HANDLE_MSG是在windowsx.h中定义的:

#define HANDLE_MSG(hwnd, message, fn)    \
    case (message): return HANDLE_##message((hwnd), (wParam), (lParam), (fn))

宏的三个参数分别为窗口句柄hwnd、消息message和响应函数fn。HANDLE_##message也是预定义宏,功能是从wParam和lParam中提取参数列表。但有一件事仍是开发者自己要做的,即定义根据消息的参数列表定义响应函数,只需按照windowsx.h中相应HANDLE_##message复制粘贴即可。

使用宏简化后的代码如下:

HANDLE_MSG(hwnd, WM_CREATE, OnCreate);
HANDLE_MSG(hwnd, WM_COMMAND, OnCommand);
//...
//...
HANDLE_MSG(hwnd, WM_EXIT, OnExit);

参考文献

[1].使用HANDLE_MSG宏简化Win32应用的开发

相关文章

  • 用HANDLE_MSG让代码更清晰

    最近接手了一个Win32软件项目,其中涉及到大量消息的响应,通篇都是这样的代码 每种消息响应都离不开wParam和...

  • 用记录让感知更清晰

  • 让清晰更清晰,让边界建立

    清晰内心的混乱、情绪、想法 让边界建立,很多时候我们的边界感模糊,不触碰他人边界,也不让他人越过自己的界限,清晰的...

  • vscode+vue-cli+eslint格式化代码

    eslint规范可以让代码看起来更清晰,也可以让团队协作合并代码时减少格式化的冲突。写了这么些时间的前端代码,才想...

  • 给大家安利一下 PowerShell

    代码更简洁、脚本更清晰、跨平台一致性等好处是让 Linux 和 OS X 用户喜爱 PowerShell 的原因。...

  • jupyter主题设置

    设置Jupyter主题,可以让代码看起来更清晰,界面更舒服,方法如下: 第一步,安装:这里我们使用pip进行安装 ...

  • 做Java开发,你需要了解这些

    前言: 在开发中,我们写的代码肯定是越少越好,代码层次越清晰越好。那么下面就介绍一些可以减少代码量、可以让结构更清...

  • Block与代理的使用

    本人其实是比较喜欢用Block的,因为用block写出来的代码,让我感觉代码要紧凑一些,看起来的时候,思路要清晰些...

  • 如何在忽略大小写的情况下测试是否是定义的枚举?

    枚举的优点:1、枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。2、枚举使代码更清晰,允许用描述性...

  • 用反问句,让你的表达更清晰

    我们在表达的时候,如何能让自己表达有逻辑性,而且表述清晰,能使对方注意听? 我们可以运用到金字塔原理中的纵向逻辑表...

网友评论

      本文标题:用HANDLE_MSG让代码更清晰

      本文链接:https://www.haomeiwen.com/subject/rkyecxtx.html