学徒送分贴!VK_SHIFT 判断shift是否按下(问题解决马上结贴)!!!

hahuma 2005-11-03 03:55:16
case WM_KEYDOWN:
{
int virtual_key = (int)wparam;
int key_state = (int)lparam;

hdc = GetDC(hwnd);
SetTextColor(hdc,RGB(0,0,255));
SetBkColor(hdc,RGB(0,0,0));
SetBkMode(hdc,OPAQUE);

switch(virtual_key)
{
case VK_LEFT:
{

if(key_state == VK_SHIFT)
{
TextOut(hdc,30,140,"Run",strlen"Run"));

}else
TextOut(hdc,30,140,"Go",strlen("Go"));
}break;

各位大虾我是新手,用这个方法判断shift是否按下怎么不行呢?应该怎么弄呢?我这么做错在哪里呢?还请大家不吝赐教!谢谢!!
...全文
435 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyamw 2005-11-03
  • 打赏
  • 举报
回复
WM_KEYDOWN消息的lParam参数:

lParam
Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table.
0-15
Specifies the repeat count for the current message. The value is the number of times the keystroke is autorepeated as a result of the user holding down the key. If the keystroke is held long enough, multiple messages are sent. However, the repeat count is not cumulative.
16-23
Specifies the scan code. The value depends on the OEM.
24
Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.
25-28
Reserved; do not use.
29
Specifies the context code. The value is always 0 for a WM_KEYDOWN message.
30
Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is zero if the key is up.
31
Specifies the transition state. The value is always zero for a WM_KEYDOWN message.
hahuma 2005-11-03
  • 打赏
  • 举报
回复
刚开始接触vc,c++基础也不好很多概念还比较模糊, lparam 这个参数 不就是用来判断其他的特殊控制的么? 应该怎么用呢?
hahuma 2005-11-03
  • 打赏
  • 举报
回复
谢谢两位,那我这么写的问题是什么呢?为什么判断不了呢?WM_KEYDOWN 的消息参数lparam在这里用不上么?
goodboyws 2005-11-03
  • 打赏
  • 举报
回复
GetKeyState(VK_SHIFT) & 0x8000
hyamw 2005-11-03
  • 打赏
  • 举报
回复
用GetKeyState就可以了

16,551

社区成员

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

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

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