gpt4 book ai didi

c++ - 如何获得用于命令ID的键盘加速器?

转载 作者:行者123 更新时间:2023-12-03 06:58:38 25 4
gpt4 key购买 nike

MFC功能包似乎神奇地将资源键盘加速器快捷方式打印到菜单项的工具提示。
如何找到给定命令ID的组合键(如果我只有HACCEL句柄?)。

最佳答案

您可以使用 CopyAcceleratorTable() function检索给定HACCEL句柄的加速器列表。
首先,使用nullptr0作为第二和第三个参数调用该函数以获取列表的大小(即加速器的数量),然后分配适当大小的ACCEL结构的缓冲区。
然后,您可以使用指向该缓冲区的指针和先前返回的计数再次调用CopyAcceleratorTable
现在,您可以遍历该缓冲区,使用每个结构的三个字段来确定加速键是什么,它具有的标志以及它代表的命令。

HACCEL hAcc; // Assuming this is a valid handle ...
int nAcc = CopyAcceleratorTable(hAcc, nullptr, 0); // Get number of accelerators
ACCEL *pAccel = new ACCEL[nAcc]; // Allocate the required buffer
CopyAcceleratorTable(hAcc, pAccel, nAcc); // Now copy to that buffer
for (int a = 0; a < nAcc; ++a) {
DWORD cmd = pAccel[a].cmd; // The command ID
WORD key = pAccel[a].key; // The key code - such as 0x41 for the "A" key
WORD flg = pAccel[a].fVirt; // The 'flags' (things like FCONTROL, FALT, etc)
//...
// Format and display the data, as required
//...
}
delete[] pAccel; // Don't forget to free the data when you're done!
您可以在 this page上看到 ACCEL结构的三个数据字段的值和格式的描述。

关于c++ - 如何获得用于命令ID的键盘加速器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64772377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com