怎样从虚拟建virtual-key code得到键名KeyNameText?

mengxihe 2004-08-10 08:28:51
我知道这个函数,可是参数不是virtual-key code
int GetKeyNameText(
LONG lParam, // second parameter of keyboard message
LPTSTR lpString, // buffer for key name
int nSize // maximum length of key name
);
做程序键盘设置得时候,比如像左用光标键<-,是保存虚拟建还是保存lParam?保存虚拟键怎么得到KeyNameText?保存lParam怎么得到虚拟键?用
UINT MapVirtualKey(
UINT uCode, // virtual-key code or scan code
UINT uMapType // translation to perform
);
LEFT和NUM4是一样的-_-
谁有键盘设置的例子啊?
...全文
259 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengxihe 2004-08-13
  • 打赏
  • 举报
回复
唉!256个KeyName要死人滴~~~~~~~-_-,偶把LPARAM保存了
angelcool 2004-08-11
  • 打赏
  • 举报
回复
xue xi
zhucde 2004-08-11
  • 打赏
  • 举报
回复
virtual-key code得到键名KeyNameText?

有这种对应关系吗?系统没有提供.

正如楼上所说,虚拟键值是一组宏定义,是用一些16进制数来表示的,
而并没有定义其KeyNameText?

LEFT和NUM4并不一样,它们是两个单独的键,
只有当Num Lock关闭了,NUM4不存在了,此时他响应了LEFT.


如果想得到你的目的,
那你自己像MFC一样,自己定义一组对应关系,
让其虚拟键值对应一个KeyNameText.

类似于:

switch(VKKEY)
{
case VK_LEFT:
KeyNameText="LEFT";
break;
....
....
}
huaguli 2004-08-11
  • 打赏
  • 举报
回复
up
howtotell 2004-08-11
  • 打赏
  • 举报
回复
所谓虚键值也就是一个long型的整数,而LPARAM也是,所以他们可以表示一个东西.键名和键值对应关系可以参见MFC的定义:
/*
* Virtual Keys, Standard Set
*/
#define VK_LBUTTON 0x01
#define VK_RBUTTON 0x02
#define VK_CANCEL 0x03
#define VK_MBUTTON 0x04 /* NOT contiguous with L & RBUTTON */

#define VK_BACK 0x08
#define VK_TAB 0x09

#define VK_CLEAR 0x0C
#define VK_RETURN 0x0D

#define VK_SHIFT 0x10
#define VK_CONTROL 0x11
#define VK_MENU 0x12
#define VK_PAUSE 0x13
#define VK_CAPITAL 0x14
.....................
mengxihe 2004-08-11
  • 打赏
  • 举报
回复
maxcode(zhangjianfang) : 你的代码是正确滴~~~~~~~~~~,但是对于我的问题是没有解决滴 -_-
maxcode 2004-08-10
  • 打赏
  • 举报
回复
在视图里得到:
BOOL CCT002View::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class

if (pMsg->message == WM_KEYDOWN)
{

CHAR pString[255];
::GetKeyNameText(pMsg->lParam,pString,255);
MessageBox(CString(pString));
}
return CView::PreTranslateMessage(pMsg);
}
刚在CSDN上学得PreTranslateMessage,在这里先用上一下
不知道对不对噢!
赖勇浩 2004-08-10
  • 打赏
  • 举报
回复
我以前做过俄罗斯方块,是两个都保存起来的。

但我想虚拟键值和lParam应该有个对应的转换关系的,找到这个关系也许就行了。
一、认知筑基:搭系统框架,规避入门误区 提升AI技能首重系统认知。课程拆解AI核心原理,明确各类工具应用边界与场景,帮助搭学习框架、规避常见误区,梳理学习优先级,为工具实操筑牢基础。 二、工具实操:精通全能应用,突破技能瓶颈 工具实操是AI技能提升核心。课程以“分类教学+协同实战”模式,覆盖主流AI工具全场景应用,拆解基础至进阶技巧,助力一套课程精通全品类工具。针对视觉生成与智能对话工具,分别讲解核心技巧与提示词设计,实现多工具协同赋能突破。 三、专项突破:掌握爆款逻辑,打通写作秘籍 深耕专项技能可强化竞争力。课程配套AI写作秘籍与爆款公式,拆解优质内容创作逻辑,提炼核心方法论,提供全流程写作指导,规避AI写作短板,助力掌握爆款技巧,适配多元场景。 四、实战落地:链接商业场景,实现价值转化 AI技能的终极目标是商业落地与价值转化。课程商业实战模块聚焦职场与运营场景,讲解AI工具在数据整理、营销优化等环节的应用,搭标准化流程实现降本增效,通过案例拆解构价值转化闭环。 AI时代,技能迭代速率决定成长与职业高度。该课程以“从零到精通”为定位,覆盖全学习维度,助力学习者从零基础蜕变为AI多面手,让AI技术赋能效率提升与职业发展。
智能面试刷题系统是一个基于前后端分离架构的企业级在线学习平台,主要用于帮助用户高效准备技术面试。该系统采用Spring Boot作为后端框架,Next.js作为前端框架,结合Redis、MySQL和Elasticsearch等核心技术,构了一个功能完善、性能优越的面试刷题解决方案。 系统核心功能包括题库管理、智能检索、在线刷题和数据分析四大模块。管理员可以通过后台管理系统创和维护题库、题目及详细题解,支持多种题型和难度分类。用户端提供完整的注册登录功能,用户登录后可以使用分词检索技术快速查找相关题目,系统基于Elasticsearch实现高效的全文搜索功能。在线刷题模块支持实时代码编辑和运行,用户可以查看详细的解题思路和参考答案。数据分析模块通过可视化日历图展示用户的刷题记录和学习进度,帮助用户合理安排学习计划。 在技术实现方面,系统采用分层架构设计,运用单例模式、工厂模式和观察者模式等多种设计模式,确保代码的可维护性和扩展性。性能优化方面,系统集成了Druid数据库连接池管理数据库连接,使用HotKey技术进行热键探测和缓存优化,通过Redis缓存频繁访问的数据,显著提升系统响应速度。安全性方面,系统采用Sa-Token进行权限认证和会话管理,集成Sentinel实现流量控制和熔断机制,同时具备动态IP黑白名单过滤、同端登录冲突检测和分级反爬虫策略,全方位保障系统安全。 该系统特别适合作为计算机相关专业的毕业设计项目,提供了完整的源码和详细的系统设计文档。项目从需求分析、系统设计到编码实现的全过程都符合企业级开发标准,学生可以通过学习该项目掌握前后端分离开发、微服务架构、性能优化和安全防护等关键技术。系统采用服务端渲染技术提升首屏加载速度,优化用户体验,同时支持响应式设计,适配多种终端设备。 对于正在准备毕业设计的学生来说,这个系统不仅提供了完整的技术实现方案

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧