VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 254|回复: 6

VC++基础班-[10]对话框响应鼠标及键盘消息

[复制链接]
32_avatar_middle
最佳答案
0 
在线会员 发表于 2019-10-27 01:06:48 | 显示全部楼层 |阅读模式
◆ WM_KEYDOWN 消息发送的 pMsg->wParam 字符都是大写的,如果要判断按下的字符是大写还是小写,可以在 WM_CHAR 消息中使用 ASCII 码对 pMsg->wParam 进行判断,

求代码
不知道 WM_CHAR怎么在WM_KEYDOWN下使用




上一篇:关于MFC->List Control速度问题
下一篇:MFC List control 网格更改颜色怎么弄?
58_avatar_middle
最佳答案
45 
online_vip 发表于 2019-10-27 01:16:16 | 显示全部楼层
switch(wParam)
case  xxx....
这种基础因该先百度一下。
58_avatar_middle
最佳答案
45 
online_vip 发表于 2019-10-27 01:24:24 | 显示全部楼层
本帖最后由 thzzl 于 2019-10-27 01:25 编辑

1、先获得WM_KEYDOWN消息,在消息函数中在写一个switch(pMsg->wParam),switch(pMsg->wParam)就等同于WM_CHAR消息。
2、ASCII码,大写字母范围是65-90,小写字母范围是97-122,具体的可以百度找张ASCII码表,如果WM_CHAR,得到的数字在65-90范围内就是小写。
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-10-28 00:13:03 | 显示全部楼层
thzzl 发表于 2019-10-27 01:24
1、先获得WM_KEYDOWN消息,在消息函数中在写一个switch(pMsg->wParam),switch(pMsg->wParam)就等同于WM_CH ...
  1.         if (pMsg->message==WM_KEYDOWN)
  2.         {
  3.                 switch (pMsg->wParam)
  4.                 {
  5.                 case 97:
  6.                         MessageBox(_T("a"));
  7.                         break;
  8.                 case 65:
  9.                         MessageBox(_T("A"));
  10.                         break;
  11.                 default:
  12.                         break;
  13.                 }
  14.         }
复制代码


我调试发现不管我键盘输入大写A还行小写a,psM->wParam的值都是65。
求请教
58_avatar_middle
最佳答案
45 
online_vip 发表于 2019-10-28 13:41:54 | 显示全部楼层
aaa@ 发表于 2019-10-28 00:13
我调试发现不管我键盘输入大写A还行小写a,psM->wParam的值都是65。
求请教

把项目源代码发出来同,@syc让帮看看。
58_avatar_middle
最佳答案
45 
online_vip 发表于 2019-10-28 15:33:44 | 显示全部楼层
aaa@ 发表于 2019-10-28 00:13
我调试发现不管我键盘输入大写A还行小写a,psM->wParam的值都是65。
求请教

今天家里有点事,有空发出来一起研究。
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-10-28 18:22:29 | 显示全部楼层
thzzl 发表于 2019-10-28 15:33
今天家里有点事,有空发出来一起研究。
  1.         if (pMsg->message==WM_CHAR)//WM_CHAR检测大小写
  2.         {
  3.                 switch (pMsg->wParam)
  4.                 {
  5.                 case 97:
  6.                         MessageBox(_T("a"));
  7.                         break;
  8.                 case 65:
  9.                         MessageBox(_T("A"));
  10.                         break;
  11.                 default:
  12.                         break;
  13.                 }
  14.         }
  15.         else if (pMsg->message == WM_KEYDOWN)//WM_KEYDOWN检测非字母键
  16.         {
  17.                 switch (pMsg->wParam)
  18.                 {
  19.                 case VK_CONTROL:
  20.                         MessageBox(_T("ctrl"));
  21.                         break;
  22.                 case VK_SHIFT:
  23.                         MessageBox(_T("shift"));
  24.                         break;
  25.                 default:
  26.                         break;
  27.                 }
  28.         }
复制代码

我改成这样就可以了,但是感觉很啰嗦,很高兴我能和你交流哇!
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-11-26 10:13

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表