***************急急!就是说怎样把Virtual key (VK_*)转换成Ascii字符?应该有这样的一个函数吧?我忘记了

ChaseTheSun787 2004-11-26 09:51:56
please give me a hand
...全文
213 点赞 收藏 19
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ChaseTheSun787 2004-11-29
BOYGUARD110(BOYGUARD110) ( BOYGUARD110(BOYGUARD110)
的答复最完美,非常感谢您!
回复
ChaseTheSun787 2004-11-29
谢谢各位。等实现了再结帖。
回复
BOYGUARD110 2004-11-29

ToAscii
这个函数可以判别是大写还是小写字母,当然还要根据其它的信息

具体用法可以参考下面的文章,我就是从这里学来的

// 用日志钩子记录按键和窗口名
// 发布者: mr.freeman
http://www.vccode.com/file_show.php?id=2465


回复
loveghb 2004-11-29
晕,贴主都问了3天了啊?
汗一个
回复
loveghb 2004-11-29
MapVirtualKey
回复
ken98091 2004-11-29
LRESULT CTestView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if (message==WM_KEYUP)
{
char buf[50];
GetKeyNameText(lParam,buf,50);
AfxMessageBox(buf);
}
return CView::WindowProc(message, wParam, lParam);
}
回复
ChaseTheSun787 2004-11-29
我发现把CWnd放在CMainFrame中就可以可以收到WM_CHAR消息,而把它放在CDialog中就收不了,
而且输入字符时音箱会发出“咚咚"声。
回复
lmphp 2004-11-27
First GetMessage(), and then TranslateMessage!

TranslateMessage produces WM_CHAR messages only for keys that are mapped to ASCII characters by the keyboard driver.

回复
ChaseTheSun787 2004-11-27
有些VK_*不是直接与ASCII直接影射的,做以下的实验:
void CTempViewView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CString strShow;
strShow= (TCHAR) nChar;
MessageBox(strShow);
CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
当向窗口键入"-"时MessageBox显示"?"
等待真正的高手回答。
回复
beyondtkl 2004-11-27
Virtual key (VK_*) 。。。同意一楼....

大小写
1. 判断shift if (GetKeyState(VK_SHIFT) <0 ) // 表示SHIFT被按下
2. keyState = GetKeyState(VK_CAPITAL) ;
if (keyState and $0F) <> 0 // 表示CAPS LOCK被按下...
回复
zyh_jason 2004-11-27
WM_CHAR不就是得到ascii的吗?
回复
ChaseTheSun787 2004-11-27
UP
回复
ChaseTheSun787 2004-11-27
s
回复
ChaseTheSun787 2004-11-27
我的工程是MFC,不是SDK,在MFC工程中调用TranslateMessage()可行吗?要是可行的话那么应该把这个
函数放在哪?放PretranslateMessage()中吗?
回复
saliors 2004-11-26
VK_* 本来就是一个个定义值啊
再VC里面是这样描述的:
#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

#define VK_KANA 0x15
#define VK_HANGEUL 0x15 /* old name - should be here for compatibility */
#define VK_HANGUL 0x15
#define VK_JUNJA 0x17
#define VK_FINAL 0x18
#define VK_HANJA 0x19
#define VK_KANJI 0x19

#define VK_ESCAPE 0x1B

#define VK_CONVERT 0x1C
#define VK_NONCONVERT 0x1D
#define VK_ACCEPT 0x1E
#define VK_MODECHANGE 0x1F

#define VK_SPACE 0x20
#define VK_PRIOR 0x21
#define VK_NEXT 0x22
#define VK_END 0x23
#define VK_HOME 0x24
#define VK_LEFT 0x25
#define VK_UP 0x26
#define VK_RIGHT 0x27
#define VK_DOWN 0x28
#define VK_SELECT 0x29
#define VK_PRINT 0x2A
#define VK_EXECUTE 0x2B
#define VK_SNAPSHOT 0x2C
#define VK_INSERT 0x2D
#define VK_DELETE 0x2E
#define VK_HELP 0x2F

/* VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */
/* VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */

#define VK_LWIN 0x5B
#define VK_RWIN 0x5C
#define VK_APPS 0x5D

#define VK_NUMPAD0 0x60
#define VK_NUMPAD1 0x61
#define VK_NUMPAD2 0x62
#define VK_NUMPAD3 0x63
#define VK_NUMPAD4 0x64
#define VK_NUMPAD5 0x65
#define VK_NUMPAD6 0x66
#define VK_NUMPAD7 0x67
#define VK_NUMPAD8 0x68
#define VK_NUMPAD9 0x69
#define VK_MULTIPLY 0x6A
#define VK_ADD 0x6B
#define VK_SEPARATOR 0x6C
#define VK_SUBTRACT 0x6D
#define VK_DECIMAL 0x6E
#define VK_DIVIDE 0x6F
#define VK_F1 0x70
#define VK_F2 0x71
#define VK_F3 0x72
#define VK_F4 0x73
#define VK_F5 0x74
#define VK_F6 0x75
#define VK_F7 0x76
#define VK_F8 0x77
#define VK_F9 0x78
#define VK_F10 0x79
#define VK_F11 0x7A
#define VK_F12 0x7B
#define VK_F13 0x7C
#define VK_F14 0x7D
#define VK_F15 0x7E
#define VK_F16 0x7F
#define VK_F17 0x80
#define VK_F18 0x81
#define VK_F19 0x82
#define VK_F20 0x83
#define VK_F21 0x84
#define VK_F22 0x85
#define VK_F23 0x86
#define VK_F24 0x87

#define VK_NUMLOCK 0x90
#define VK_SCROLL 0x91

/*
* VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
* Used only as parameters to GetAsyncKeyState() and GetKeyState().
* No other API or message will distinguish left and right keys in this way.
*/
#define VK_LSHIFT 0xA0
#define VK_RSHIFT 0xA1
#define VK_LCONTROL 0xA2
#define VK_RCONTROL 0xA3
#define VK_LMENU 0xA4
#define VK_RMENU 0xA5
回复
ChaseTheSun787 2004-11-26
如何影射[]-=~!@#$%^&*()等?
回复
I_Love_CPP 2004-11-26
Q:判断当前输入的是大写还是小写?
A:可用::GetKeyState(VK_..)判断shift 和CAPSLOCK是否被按下
回复
ChaseTheSun787 2004-11-26
有人会吗?
回复
ChaseTheSun787 2004-11-26
0 ~ 9 A~Z 是直接跟ASCII表影射,可是其它的键就不是了,像[]-=~!@#$%^&*()等。还有
怎样判断当前输入的是大写还是小写,真的要用GetAsyncKeyState函数吗?请高手帮帮忙
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-11-26 09:51
社区公告

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