- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个带有菜单和编辑类句柄的窗口。在菜单中,我有一个编辑部分,其中包含剪切、复制、粘贴、ecc 等选项。
我已经定义了 2 个键盘加速器:
IDR_ACCELERATOR2 ACCELERATORS
BEGIN
"A", ID_EDIT_SALL, VIRTKEY, CONTROL, NOINVERT
"Z", ID_EDIT_UNDO, VIRTKEY, CONTROL, NOINVERT
END
CTRL + Z 有效,但 CTRL + A 无效。在 WM_COMMAND
案例中,我有这个:
switch (LOWORD(wParam))
{
case ID_EDIT_CLEAR:
SendMessage(hwndEdit, WM_CLEAR, 0, 0);
break;
case ID_EDIT_COPY:
SendMessage(hwndEdit, WM_COPY, 0, 0);
break;
case ID_EDIT_CUT:
SendMessage(hwndEdit, WM_CUT, 0, 0);
break;
case ID_EDIT_PASTE:
SendMessage(hwndEdit, WM_PASTE, 0, 0);
break;
case ID_EDIT_SALL:
SendMessage(hwndEdit, EM_SETSEL, 0, -1);
break;
case ID_EDIT_UNDO:
SendMessage(hwndEdit, WM_UNDO, 0, 0);
break;
}
当我单击菜单选项 Select All
时,该选项运行良好,它确实选择了编辑器句柄中的所有文本,但是当我尝试使用键盘组合 CTRL+A Windows 时那个错误的声音(就像当你试图删除空文档中的单词时)
更新:消息循环
BOOL msgCheck;
while ((msgCheck = GetMessage(&msg, NULL, 0, 0)) != 0)
{
if (msgCheck == -1)
{
MessageBox(NULL, TEXT("Error!"), TEXT("Error"), MB_ICONERROR);
return -1;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
最佳答案
为了使用加速器,您需要先加载加速器表。然后您需要在消息循环中检查它们。
如果您加载了加速器表,您还没有向我们展示,所以我在下面向您展示了如何做:
HANDLE hAccel = LoadAccelerators( hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR2));
您应该在 WinMain
中执行此操作,然后像下面这样修改您的消息循环:
BOOL msgCheck;
while ((msgCheck = GetMessage(&msg, NULL, 0, 0)) != 0)
{
if (msgCheck == -1)
{
MessageBox(NULL, TEXT("Error!"), TEXT("Error"), MB_ICONERROR);
return -1;
}
else
{
// Add the below call to your message loop
if(!TranslateAccelerator(hwnd, hAccel, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
hwnd
是主窗口的句柄,hAccel
是您用前面的代码片段加载的加速器表的句柄。
为了更好地理解我做了什么以及为什么,请查看 official documentation for accelerator tables ,尤其是我链接到的代码示例。
只要通读一遍,您就会明白自己的错误所在,并且能够理解我是如何改正这些错误的。
关于c - 键盘加速器不捕获 CTRL + A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32004748/
大模型技术的发展和应用,预示着更加智能化、个性化未来的到来。如果将大模型比喻为正在疾驰的科技列车,语料便是珍贵的“燃料”。本次世界人工智能大会期间,合合信息为大模型打造的“加速器”解决方案备受关
如何设置快捷方式,例如。 Ctrl+Q,到 JButton ? JMenuItem有 setAccelerator()设置一个的方法,但是 JButton没有。 最佳答案 好吧,您可以使用 set o
如何从 TMainMenuActionBar 中删除加速器? 似乎找不到要更改的 AutoHotKey = maManual 属性,也找不到任何其他会产生正确效果的属性。 最佳答案 (假设问题是关于
我正在 Appcelerator 中开发 iOS 应用程序。如何检测用户何时点击窗口标题(导航栏中的标题)? 感谢您的所有意见! 最佳答案 我会在导航栏标题上放置一个透明 View ...如果您不使用
我读到了助记符和加速器的区别,但现在我想知道这些是否加速器仅用于菜单项或其他 JComponents。 最佳答案 您可以为任何 JComponent 使用键绑定(bind) :) 看看这个 guide
我在 Windows 10 中使用 Delphi XE7。我在主窗体和模态辅助窗体上都有一个 TMainMenuBar。问题是,如果辅助窗体还包含 TMemo,辅助窗体上的加速键不会激活菜单。例如,如
(是的,我知道 SO 上有 a similar question,但它已经 8 个月大了——从那时起 IE8 RTM 就出来了——而且不是很有启发性) 是否可以在我的网站上禁用 IE8 的“加速器”?
我需要创建一个可在 BlackBerry (10%) 和 iO (90%) 上运行的应用程序。 Appcelerator Titanium 看起来确实可以,但 BlackBerry 开发仅在 Wind
我正在使用 PowerBuilder(我猜它与这个问题无关,尽管我可能错了)。 我正在尝试将按钮上的文本设置为“Save && &New”,它应该读作“Save & New”,并带有下划线“N”。 可
$ appc ti build -T dist-adhoc Appcelerator Command-Line Interface, version 7.1.2 Copyright (c) 2014-
好吧,我对 Electron 和开发网络应用程序非常陌生。我不擅长阅读文档。如何注册全局短 切割为 Electron 。 最佳答案 即使应用程序没有键盘焦点,您也可以使用 globalshortcut
我目前正在使用 Appcelerator 开发一款 Android 应用程序,该应用程序仅提供西类牙语版本。 我的问题是,如果用户的智能手机不是西类牙语,则 strings.xml 中的字符串将不会显
Titanium SDK 版本:1.7.0iPhone SDK 版本:4.2 我正在开发一个 iOS 应用程序,我监控每个窗口的内存使用情况,并且它在每个屏幕上都在不断减少。 一般来说什么是消耗内存?
我正在使用glade和C语言来开发GUI。我能够将键盘上的所有数字键和字母键映射到林间按钮作为加速器。但是,我无法映射以下按钮:ESC、向上、向下、向左、向右箭头。 在林间空地,当我在加速器字段中输入
我的应用程序的主 JFrame 包含一个 JTextPane。虽然它具有焦点,但它会使用所有键盘快捷键(“加速器”),而不是将它们传递给 JFrame 的 JMenu。这意味着虽然它有焦点,例如“新建
我想给组件添加一个加速器,比如对 JTextComponent 执行撤消/重做(Ctrl-Z、Ctrl-Y),但想在JMenu,我应该将 KeyStroke + AbstractAction 添加到:
我知道从 4.2.1 开始就有适用于 iOS 的 API安卓呢?谁知道我们什么时候可以在 Android 浏览器中访问陀螺仪数据? 最佳答案 据我所知,最常见的版本(Android 2.2、2.3)不
我目前正在使用 WCF 服务,该服务使用基于消息的安全性,旨在通过 HTTP 而不是 HTTPS 进行访问。 这已经过测试,效果很好。在部署到使用 SSL 加速器的机器时,出现以下错误。 “接收对 h
我有一个 mfc 应用程序,我在其中定义了键盘加速器当我使用字母数字字符时它工作正常,但我想定义一个加速器,在按下 +/- 键时放大/缩小所以我将其定义如下并且它工作正常 ID1 ACCELERAT
最近我做了一些研究,使用加速度计 + 陀螺仪来使用这些传感器在没有 GPS 帮助的情况下跟踪智能手机(见这篇文章) Indoor Positioning System based on Gyrosco
我是一名优秀的程序员,十分优秀!