窗口消息处理程序的工作包括启用和无效化「Edit」菜单中的选项,这项工作在处理WM_INITMENUPOPUP时完成。首先,程序检查是否要显示「Edit」弹出式菜单。因为菜单里「Edit」的位置索引(「File」从0开始)是1,因此如果即将显示「Edit」弹出式菜单,那么lParam应该等于1。

为了确定是否启用「Undo」选项,POPPAD2给编辑控件发送一条EM_CANUNDO消息。如果编辑控件能够执行「Undo」动作,那么SendMessage呼叫传回非零值。在这种情况下,选项被启用;否则,选项无效化:

EnableMenuItem (wParam, IDM_UNDO,

SendMessage (hwndEdit, EM_CANUNDO, 0, 0) ?

MF_ENABLED : MF_GRAYED) ;

只有当剪贴簿中包含文字时,「Paste」选项才能够被启用。我们可以使用CF_TEXT标识符通过IsClipboardFormatAvailable呼叫来确定这一点:

EnableMenuItem (wParam, IDM_PASTE,

IsClipboardFormatAvailable (CF_TEXT) ? MF_ENABLED : MF_GRAYED) ;

只有选择了编辑控件中的文字,「Cut」、「Copy」和「Delete」选项才能够被启用。给编辑控件发送一条EM_GETSEL消息,并传回包含此信息的整数:

iSelect = SendMessage (hwndEdit, EM_GETSEL, 0, 0) ;

iSelect的低位字是第一个被选中字符的位置,iSelect的高字组是下一个被选中字符的位置。如果这两个字相等,则表示没有选中文字:

if (HIWORD (iSelect) == LOWORD (iSelect))

iEnable = MF_GRAYED ;

else

iEnable = MF_ENABLED ;

然后可以将iEnable的值用于「Cut」、「Copy」和「Delete」选项:

EnableMenuItem (wParam, IDM_CUT, iEnable) ;

EnableMenuItem (wParam, IDM_COPY, iEnable) ;

EnableMenuItem (wParam, IDM_DEL, iEnable) ;

c语言菜单 键盘,三、Windows键盘快捷键—启用菜单项相关推荐

  1. 180126—【Mac OS X虚拟机】使用备忘录—Mac键盘与windows键盘的对应

    俗话说:在没有对比的情况下,对一个东西的认知总是不够全面而透彻的.对比,在大部分情况下会打破许多你习以为常,想当然的应当,给你一个从未有过的看待事物.思考问题的角度.方法. 好吧我承认这是我说的. 当 ...

  2. Android UI设计 下拉菜单Spinner用法 动态添加删除Spinner菜单项

    Spinner是一种下接菜单,类似HTML中的select标签,点击后弹出一个对话框,显示几个供选择的选项,手机屏幕大小有限,如果都用RadioGroup单选按钮,会占用很大的空间.今天的例子最终效果 ...

  3. c语言菜单 键盘,三、Windows键盘快捷键—处理菜单项

    当然,如果POPPAD2程序不使用子窗口编辑控件,那么我们将面临一些问题,这涉及如何完成「Edit」菜单中的「Undo」.「Cut」.「Copy」.「Paste」.「Clear」和「Select Al ...

  4. C语言笔记 第三章 键盘输入与输出

    文章目录 1 printf() 1.1 整型 1.2 字符型 1.3 浮点型 1.4 其他 1.4.1 标志 1.4.2 输出最小宽度 1.4.3 精度 1.4.4 类型长度 1.5 转义字符 2 s ...

  5. Mac键盘和Windows键盘对应表

    Boot Camp: Apple Keyboard (Ultra–thin USB) keyboard mapping in Windows Summary Learn how Boot Camp m ...

  6. Java菜单(菜单条、菜单和菜单项)

    有两种类型的菜单:下拉式菜单和弹出式菜单.本章只讨论下拉式菜单编程方法.菜单与JComboBox和JCheckBox不同,它们在界面中是一直可见的.菜单与JComboBox的相同之处是每次只可选择一个 ...

  7. 13、Java菜单条、菜单、菜单项

    13.Java菜单条.菜单.菜单项 一般用Java做界面时,都得牵涉到菜单条.菜单.菜单项的设计.菜单项放在菜单里,菜单放在菜单条里,且其字体均可设置. 13.1.菜单条(Menubar) Frame ...

  8. 如何在系统菜单中添加一个自己的菜单项

    CSDN地址: http://topic.csdn.net/u/20080722/18/8517e419-7788-4d1c-9029-7a806f5da46c.html 全文: 如题,目前我要做的就 ...

  9. bootstrap 导航菜单 折叠位置_python测试开发django44.xadmin自定义菜单项

    前言 xadmin后台的菜单项是放到一个app下的,并且里面的排序是按字母a-z排序,有时候我们需要划分多个项,需要自定义菜单列表,可以通过重写CommAdminView类实现. xadmin后台提供 ...

最新文章

  1. 拥有“上帝视角”是怎样的体验?高分多模卫星首批影像成果发布
  2. FTP的主动模式和被动模式,你应该用那种?
  3. VS 2019要来了,是时候了解一下C# 8.0新功能
  4. 主成分分析 PCA算法
  5. boost::math模块使用指定宽度的浮点 typedef估中等复杂的数学函数的测试程序
  6. 知乎上高赞的40个有趣回复,很精辟!
  7. python字典遍历 没有顺序_Python中字典的顺序问题(为什么实践发现字典的遍历和方法popitem并不是随机的?)...
  8. http://www.oreilly.com/catalog/errataunconfirmed.csp?isbn=9780596529321
  9. Adobe Flash Player v26.0.0.126发布:请尽快更新
  10. 开源众包-项目大厅数据爬取
  11. 安全防御-----防病毒
  12. 永恒之蓝漏洞紧急应对方案
  13. 支付宝交易行为数据分析
  14. 【报告分享】第二届中国工业互联网大赛成果汇编-中国工业互联网大赛组委会(附下载)
  15. Go包管理工具Vendor使用教程
  16. pe修改服务器2003密码,PE修改Windows密码
  17. 国家标准中常出入的IDT、MOD、EQV、NEQ是啥意思
  18. 安全狗加入天翼网信安全产业联盟 发挥云安全生态影响力
  19. MacOS下安装及配置Maven
  20. 一套极简的MQTT使用接口EasyMqttClient

热门文章

  1. Mysql基础——多表联查之连接查询
  2. 猿团项目实战-仿途牛旅行APP免费视频课程
  3. 学习C语言常用的几个网站
  4. 极路由X(C526A)刷Openwrt 18.06固件(2021-12-12亲测)
  5. 空字符串、NULL、空格串的区别
  6. 开源智能电子名片系统源码 含小程序完整前后端+搭建教程
  7. (程序员情感三部曲之二)程序员如何找女朋友
  8. win10 itunes更新ios系统异常 提示“未能恢复iPhone 发生未知错误(14)”
  9. 实习日志 - 第四天
  10. day19 part1:网络安全态势感知