【问题标题】:mfc accelerators Ctrl + doesn't workmfc 加速器 Ctrl + 不起作用
【发布时间】:2014-10-16 07:56:28
【问题描述】:

我有定义键盘加速器的 mfc 应用程序 当我使用字母数字字符时它工作正常,但我想定义一个在按下键时放大/缩小的加速器 +/- 所以我将它定义为以下,它工作正常

 ID1 ACCELERATORS DISCARDABLE
 {
   "+",  ID_ZOOMIN ,  ,ASCII, NOINVERT      
   "-",   ID_ZOOMIN ,ASCII, NOINVERT        
 }

现在我添加了一个文本框,它可以接受“+/-”作为字符,但按下它们现在起到放大/缩小的作用,并且不输入字符“+/-” 所以我改变了我的实现,让“zoomin/zoomout”功能只在按下控制按钮时才起作用

 ID1 ACCELERATORS DISCARDABLE
 {
   "+",  ID_ZOOMIN ,  ,ASCII, CONTROL, NOINVERT      
   "-",   ID_ZOOMIN ,ASCII, CONTROL, NOINVERT        
 }

但仍按 +/-Ctrl + +/Ctrl + -" 功能为 "zoomin/zoomout" 并且不输入 +/- 字符 注意:将 ASCII 改为 VIRTKEY 并不能解决问题

有什么想法吗??

【问题讨论】:

  • 使用 Visual Studio 的自动化方法,不要输入。
  • 感谢您的重播,但我需要更多详细说明??我正在使用 Linux 操作系统
  • 您可以使用第三方“mainsoft”在 Linux 上使用 MFC
  • 它应该和 Windows 一样工作,我只需要知道我的代码有什么问题以及如何修复它,为什么“+/-”不能像其他键一样工作跨度>
  • 我只能说,这不正常。添加 CONTROL 通常没有任何区别,如果裸 '+'、'-' 键加速器确实有效。

标签: c++ mfc acceleratorkey


【解决方案1】:

我刚刚用我的 Windows 笔记本电脑进行了测试。似乎 ASCII 加速器不支持 CONTROL 修饰符。

请改用VIRTKEY

 ID1 ACCELERATORS DISCARDABLE
 {
   107,  ID_ZOOMIN,  VIRTKEY, CONTROL, NOINVERT      
   109,  ID_ZOOMOUT,  VIRTKEY, CONTROL, NOINVERT        
 }

或为 + 指定 VK_ADD,为 - 指定 VK_SUBTRACT

Windows Virtual-Key Codes

【讨论】:

  • 感谢您的重播,我已经尝试过您的建议,但现在按“+/-”在文本框中键入字符“+/-”,但放大/缩小不起作用点击"Ctrl + 或 Ctrl -" 也输入字符
  • @mizohazem 那么,也许是 VK_OEM_PLUS 和 VK_OEM_MINUS?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多