今天看了一个东东,是关于BUTTON的,我用MFC做了一个对话框,上面其中有两个BUTTON按钮,
我按下键盘上的A键时,BUTTON1也被按下,按下B键时BUTTON2也被按下,
现在问题是我想来计数它们,也就是说当我第一次按A或B时,对话框上自动显示1,(也就是按键的次数为一次)
第二次若按相同的键就不计算,若不相同的键,则自动加1,
我不知道怎样来用代码表示它们,请哪位大哥大姐能否教我一下,在下谢谢了,
20 个解决方案
#1
不会你的问题,但是鼓励一下你学VC :)
#2
在PreTranslateMessage中处理WM_KEYDOWN,维护两个计数器。
#3
這兩個計數器怎麼來表示呀,
?
?
#4
这个问题建议你查看一些有关键盘按键消息捕获的代码,找到响应函数的处理代码,在里面做手脚就可以啊!设置2个全局变量a记录上次按键,int i;
if(本次按键!=a)
{
i=i+1;
本次按键=a;
}
记录按键的变量我就不知道了,嘻嘻
if(本次按键!=a)
{
i=i+1;
本次按键=a;
}
记录按键的变量我就不知道了,嘻嘻
#5
你看雅克医生已经说了函数的名字了,谢谢医生,你就在这个函数里面做手脚阿
#6
同意牙医
#7
添加WM_CHAR消息也可以!
#8
在PreTranslateMessage加入以下代码:
int Count = 0;
int LastKey = -1;
if(int(pMsg->message) == WM_KEYDOWN)
{
if(pMsg->wParam != LastKey)
{
Count++;
}
}
Count就是你要统计的次数
int Count = 0;
int LastKey = -1;
if(int(pMsg->message) == WM_KEYDOWN)
{
if(pMsg->wParam != LastKey)
{
Count++;
}
}
Count就是你要统计的次数
#9
错了,应该是
int Count = 0;
int LastKey = -1;
if(int(pMsg->message) == WM_KEYDOWN)
{
if(pMsg->wParam != LastKey)
{
Count++;
LastKey = pMsg->wParam;
}
}
int Count = 0;
int LastKey = -1;
if(int(pMsg->message) == WM_KEYDOWN)
{
if(pMsg->wParam != LastKey)
{
Count++;
LastKey = pMsg->wParam;
}
}
#10
高手們請留步,怎么让结果显示出来呀,
我用DC....顯示不出來呀
我用DC....顯示不出來呀
#11
謝謝,我現在做做看看,
#12
各位大狹,还有一点错误呀,就是在对话框上显示不出来,
这是为什么???
我用 AfxMessageBox(" click count is %d",Count);不行呀
请大狹说说这是为什么啊
这是为什么???
我用 AfxMessageBox(" click count is %d",Count);不行呀
请大狹说说这是为什么啊
#13
可以显示出来了,可是重复的键也在内呀,我不要重复的呀,
这可怎么办
这可怎么办
#14
设置一个BOOL型信号信号量,获得当前按键时判断该信号量的值,并根据当前按键重新为该信号量赋值,以便处理下一个按键时是否是重复。
#15
依照这个程序,应该怎么添加呢
我先前定义过BOOL,可是没有反映,
if( (pMsg->message) == WM_KEYDOWN)
{
static int Count = 0;
if( pMsg->wParam== LastKey)
{ Count++;
LastKey = pMsg->wParam;
m_Count.Format("%d",Count);
}
this->UpdateData(false);
我就是这样的,可以显示,但是重复的它也算了,不知我用这个来显示是不是对的,m_Count.Format("%d",Count); this->UpdateData(false);
???????????????
我先前定义过BOOL,可是没有反映,
if( (pMsg->message) == WM_KEYDOWN)
{
static int Count = 0;
if( pMsg->wParam== LastKey)
{ Count++;
LastKey = pMsg->wParam;
m_Count.Format("%d",Count);
}
this->UpdateData(false);
我就是这样的,可以显示,但是重复的它也算了,不知我用这个来显示是不是对的,m_Count.Format("%d",Count); this->UpdateData(false);
???????????????
#16
??????????????????????
#17
小弟我郁悶呀
#18
up
#19
自己ding一下
#20
呵呵 加油
#21
#1
不会你的问题,但是鼓励一下你学VC :)
#2
在PreTranslateMessage中处理WM_KEYDOWN,维护两个计数器。
#3
這兩個計數器怎麼來表示呀,
?
?
#4
这个问题建议你查看一些有关键盘按键消息捕获的代码,找到响应函数的处理代码,在里面做手脚就可以啊!设置2个全局变量a记录上次按键,int i;
if(本次按键!=a)
{
i=i+1;
本次按键=a;
}
记录按键的变量我就不知道了,嘻嘻
if(本次按键!=a)
{
i=i+1;
本次按键=a;
}
记录按键的变量我就不知道了,嘻嘻
#5
你看雅克医生已经说了函数的名字了,谢谢医生,你就在这个函数里面做手脚阿
#6
同意牙医
#7
添加WM_CHAR消息也可以!
#8
在PreTranslateMessage加入以下代码:
int Count = 0;
int LastKey = -1;
if(int(pMsg->message) == WM_KEYDOWN)
{
if(pMsg->wParam != LastKey)
{
Count++;
}
}
Count就是你要统计的次数
int Count = 0;
int LastKey = -1;
if(int(pMsg->message) == WM_KEYDOWN)
{
if(pMsg->wParam != LastKey)
{
Count++;
}
}
Count就是你要统计的次数
#9
错了,应该是
int Count = 0;
int LastKey = -1;
if(int(pMsg->message) == WM_KEYDOWN)
{
if(pMsg->wParam != LastKey)
{
Count++;
LastKey = pMsg->wParam;
}
}
int Count = 0;
int LastKey = -1;
if(int(pMsg->message) == WM_KEYDOWN)
{
if(pMsg->wParam != LastKey)
{
Count++;
LastKey = pMsg->wParam;
}
}
#10
高手們請留步,怎么让结果显示出来呀,
我用DC....顯示不出來呀
我用DC....顯示不出來呀
#11
謝謝,我現在做做看看,
#12
各位大狹,还有一点错误呀,就是在对话框上显示不出来,
这是为什么???
我用 AfxMessageBox(" click count is %d",Count);不行呀
请大狹说说这是为什么啊
这是为什么???
我用 AfxMessageBox(" click count is %d",Count);不行呀
请大狹说说这是为什么啊
#13
可以显示出来了,可是重复的键也在内呀,我不要重复的呀,
这可怎么办
这可怎么办
#14
设置一个BOOL型信号信号量,获得当前按键时判断该信号量的值,并根据当前按键重新为该信号量赋值,以便处理下一个按键时是否是重复。
#15
依照这个程序,应该怎么添加呢
我先前定义过BOOL,可是没有反映,
if( (pMsg->message) == WM_KEYDOWN)
{
static int Count = 0;
if( pMsg->wParam== LastKey)
{ Count++;
LastKey = pMsg->wParam;
m_Count.Format("%d",Count);
}
this->UpdateData(false);
我就是这样的,可以显示,但是重复的它也算了,不知我用这个来显示是不是对的,m_Count.Format("%d",Count); this->UpdateData(false);
???????????????
我先前定义过BOOL,可是没有反映,
if( (pMsg->message) == WM_KEYDOWN)
{
static int Count = 0;
if( pMsg->wParam== LastKey)
{ Count++;
LastKey = pMsg->wParam;
m_Count.Format("%d",Count);
}
this->UpdateData(false);
我就是这样的,可以显示,但是重复的它也算了,不知我用这个来显示是不是对的,m_Count.Format("%d",Count); this->UpdateData(false);
???????????????
#16
??????????????????????
#17
小弟我郁悶呀
#18
up
#19
自己ding一下
#20
呵呵 加油