注册 登录
编程论坛 VC++/MFC

大家帮忙分析呀,谢谢哦

kaixin1983 发布于 2011-03-17 22:30, 531 次点击

在Vc++中,MFC界面如下:
只有本站会员才能查看附件,请 登录

实现A+B=C的代码如下:
void CMyDlg::OnButton1()
{
    // TODO: Add your control notification handler code here
    UpdateData(true);
    m_3=m_1+m_2;
    UpdateData(false);
}
请教怎样编写语言实现下面功能:
在时间后面的文本框中输入一个时间x秒,在B增量处输入一个y值,每间隔x秒,B就自动增加y,则在C处自动更新数值

俺是菜鸟,大家帮忙了,谢谢您





[ 本帖最后由 kaixin1983 于 2011-3-17 22:33 编辑 ]
8 回复
#2
yuccn2011-03-18 00:15
启动计时器就行了,也就是响应下计时器
好一点的做法是,启动两个计时器
一个计时器每隔s秒来改变下C处的数据,另一个计时器定时来监控B 和s有没有变化,如果有一个变化了,就修改前面计时器 或者b的值

大概是这样:
::SetTimer(m_hWnd, 1, 1000, NULL); // 每秒看看b, s值有没有变化;其中1000为1000毫秒,也就是说1秒,1是计时器ID 。这个你查下msdn就行了

void CMyDlg::OnTimer(UINT_PTR nIDEvent)
{
  if (nIDEvent == 1) {
    // 查看B 或者S有没有变化,
    if (有变化) {
      ::KillTimer(m_hWnd, 2); // 先结束增值c的计时器,再启动
      ::SetTimer(m_hWnd, 2, s * 1000, NULL);
    }
  }
  else if (nIDEvent == 2) {  
     m_3=m_1+m_2;
     UpdateData(false);  
  }
}

还不明白就找我吧
#3
hahayezhe2011-03-18 20:59
这用两个计时器????
一个计时器就够了
至于B处的改变可以添加事件处理函数 比如文本内容被更新,或者焦点被改变
控件内容的改变会发消息通知父窗口的!
#4
yuccn2011-03-18 21:20
呵呵,不是比谁的计时器少的啊,只是说那个方便吧了

如果说比少的,不用计时器也可以,启动一个线程来监控就行了
#5
hahayezhe2011-03-18 21:23
谁跟你比这些!
MFC是以消息机制驱动的!
控件内容的改变你用计时器监控?
大炮打蚊子? 且又做不到同步!
#6
yuccn2011-03-19 00:03
“控件内容的改变你用计时器监控?
大炮打蚊子...”

看来对你来说真的是大炮打蚊子了。。。
第一次听说用计时器就是大炮的。。。。我倒是觉得计时器过于儿科
#7
yuccn2011-03-19 00:04
或许你用计时器就是用“大炮”了

少点用,弄着火了不好
#8
yuccn2011-03-19 00:06
“MFC是以消息机制驱动的!”
这句话我是第一次听的

我以前听到的是 “windows 是消息机制驱动的”
看来我以前错了,得向你多多请教

哈哈
#9
yuccn2011-03-19 00:10
哦,还有,计时器是同步的,计时器还属于主线程的,没有启动多线程。请hahayezhe不必要担心同步的问题。

[ 本帖最后由 yuccn 于 2011-3-19 00:20 编辑 ]
1