MFC中OnChar函数问题

我写了一个简单的计算器程序,但是不能响应键盘,问一下大家那个OnChar函数怎么写?可能我没说清楚,我的那个计算器编好了,就是不能响应键盘,也就是说我按键盘上的7,那个对... 我写了一个简单的计算器程序,但是不能响应键盘,问一下大家那个OnChar函数怎么写?
可能我没说清楚,我的那个计算器编好了,就是不能响应键盘,也就是说我按键盘上的7,那个对话框不能接受数据,我写的一部分是这样的(编译器用的VC6.0)
void CMyDlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch(nChar)
{
case ‘a’:
MessageBox("a");
break;
case 55:
OnButton7();
break;
}
}
按键盘没反应

回答二楼的,好像不行,其实我就是你那样写的
展开
 我来答
ked027
2009-05-07 · TA获得超过222个赞
知道小有建树答主
回答量:626
采纳率:0%
帮助的人:247万
展开全部
看到
OnButton7();

你肯定在界面上用了按钮, 如果当前焦点控件是按钮, 键盘事件会被按钮先处理掉了,不会传递到CMyDlg.

要想实现你的想法, 重载 PreTranslateMessage :

BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
switch (pMsg->wParam}
{
'a' :......
}
}
return CDialog::PreTranslateMessage(pMsg);
}
何处淬吴钩
2009-05-07 · TA获得超过5044个赞
知道大有可为答主
回答量:2947
采纳率:50%
帮助的人:2407万
展开全部
你说的是你在界面上用鼠标按可以计算,但不能用键盘吧。改成下面样式就可以了。

void CMyDlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch(nChar)
{
case '0':
//执行用鼠标按0函数
break;
case '1':
//执行用鼠标按1函数
break;
……
default:
break;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
火驹
2009-05-07 · TA获得超过1447个赞
知道小有建树答主
回答量:6294
采纳率:0%
帮助的人:1719万
展开全部
void MyFrameWindow::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
TCHAR str[2];
str[0]=(TCHAR)nChar;
str[1]=0;
}
字符数组str里面存储的就是你输入的字符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式