怪异!

davehuhudave 2003-12-26 09:59:30
我在程序中设置了一个全程变量y
并且在OnTimer()和OnKeyDown()两个函数中分别进行变换
OnTimer()中是每次加1,OnKeyDown()是使y为0
可是我每次按键盘都没有使y变0,而是不断加1
请问这是为什么?是不是两个函数不允许同时,还是其他原因?
...全文
46 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
davehuhudave 2003-12-27
  • 打赏
  • 举报
回复
我设置了断点
表明了没有响应OnKeyDown()函数
求大家帮我想象其他的方法
davehuhudave 2003-12-27
  • 打赏
  • 举报
回复
?
glacierrr 2003-12-26
  • 打赏
  • 举报
回复
估计OnKeyDown没有进去,用TRACE看看有没有进去
monstersky 2003-12-26
  • 打赏
  • 举报
回复
用pretranslatemessage也不行吗?好像很难办的说,就是说你的pretranslatemessage连WM_KEYDOWN也捕获不到吗,如果可以的话,你是不是需要在特定的控件上响应啊,如果是,可以试试(pMsg->hwnd==)试试
davehuhudave 2003-12-26
  • 打赏
  • 举报
回复
我就是用了PreTranslateMessage也不行
davehuhudave 2003-12-26
  • 打赏
  • 举报
回复
怎么办?
topwork 2003-12-26
  • 打赏
  • 举报
回复
你按开始按钮,焦点就在开始按钮上了,OnKeyDown应该收不到;
davehuhudave 2003-12-26
  • 打赏
  • 举报
回复
却是好像没相应onkeydown()
不知道为什么阿
gaoshengqiang 2003-12-26
  • 打赏
  • 举报
回复
你可以在OnKeyDown里设个断点调试一下
davehuhudave 2003-12-26
  • 打赏
  • 举报
回复
就一个开始按钮
控制时钟开始的
topwork 2003-12-26
  • 打赏
  • 举报
回复
你的page3上面有什么控件?比如按钮,Edit什么的,输入焦点在那个上面的时候怎么办?
davehuhudave 2003-12-26
  • 打赏
  • 举报
回复
page3是dialog上的一页
OnKeyDown是page3的函数
因该不错吧
我不懂什么焦点
能具体点吗?
topwork 2003-12-26
  • 打赏
  • 举报
回复
一定是你的OnKeyDown没有调用,你为你的CPropertyPage没有焦点;焦点是不是在对话窗的某个按钮上面?
davehuhudave 2003-12-26
  • 打赏
  • 举报
回复
都是全程变量
davehuhudave 2003-12-26
  • 打赏
  • 举报
回复
void CPage3::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
y1+=2;//初始都为0
y2+=3;
y3+=4;
if(y1>=hei) //hei是dialog得高度
y1=0;
if(y2>=hei)
y2=0;
if(y3>=hei)
y3=0;
if(y1>=y2)
{
if(y1>=y3)
{
chars=ch[i1];
cul=1;
}
else
{
chars=ch[i3];
cul=3;
}
}
else
{
if(y2>=y3)
{
chars=ch[i2];
cul=2;
}
else
{
chars=ch[i3];
cul=3;
}
}//选择最大的
}
CPropertyPage::OnTimer(nIDEvent);
}

void CPage3::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if(nChar==chars)
{
total++;
if(cul==1)
y1=0;
else if(cul==2)
y2=0;
else if(cul==3)
y3=0;
}
CPropertyPage::OnKeyDown(nChar, nRepCnt, nFlags);
}
monstersky 2003-12-26
  • 打赏
  • 举报
回复
把onkeydown的部分贴上来看看,在什么地方响应的,不会是dialog吧
beyondtkl 2003-12-26
  • 打赏
  • 举报
回复
OnKeyDown?? delphi的??
show then 代码看看
你OnTimer(0是自动触发的 而OnKeyDown确实你手工触发的
允许同时?? 这个问题倒没考虑过.
topwork 2003-12-26
  • 打赏
  • 举报
回复
你的OnKeyDown函数中有个叫y的局部变量;
broadoceans 2003-12-26
  • 打赏
  • 举报
回复
你可以调试一下,你的OnKeyDown()有没有执行到?
我估计可能是你的消息定义有问题。

16,551

社区成员

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

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

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