目前位置: VCer资源中心 >>> VCer知道

[本帖已阅读1585次 分值0 回复1次] 张贴资源 发回信箱 控制面板

请教高手 编写汉诺塔程序的视图显示问题~

提供者:lucy 张贴时间:2007-03-09 14:31:28.0 出处:newsmth.net 作者:不祥

请教高手 编写汉诺塔程序的视图显示问题~(2007-03-09 14:31:28.0)


lucy


 
级别: VCer小兵
头衔: VCer会员

经验: 10
作品: 92
分会: 华北分会
注册: 2007-03-09 10:35:00.0
登录: 2007-05-31 14:40:23.0

标  题: [合集] 请教高手 编写汉诺塔程序的视图显示问题~

发信站: BBS 水木清华站 (Sun Dec 19 18:47:16 2004), 站内

☆─────────────────────────────────────☆ 

  freshui (五月的风) 于  (Sat Dec 18 21:51:57 2004)  提到:

在汉诺塔算法中

void CMyView::hanoi(int n, int left, int middle, int right)

{

        if (n==0)

        {

                SwapStick(left,right);

                Invalidate();

        }

        else

        {

                hanoi(n-1,left,right,middle);

                SwapStick(left,right);

                Invalidate();

                //Sleep(400);

          hanoi(n-1,middle,left,right);

        }

}

要等到所有的stick都交换完了才显示,怎么才能让他每交换一下就显示?sleep也不好使

多谢

☆─────────────────────────────────────☆ 

  freshui (五月的风) 于  (Sat Dec 18 21:57:11 2004)  提到:

急 在线等

非常感谢

【 在 freshui (五月的风) 的大作中提到: 】                                     

: 在汉诺塔算法中                                                               

: void CMyView::hanoi(int n, int left, int middle, int right)

: {                                                                           

: ...................                                                         

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  Lomeo (swineherd) 于  (Sat Dec 18 22:07:34 2004)  提到:

sleep为什么不好使?问题出在什么地方?

【 在 freshui (五月的风) 的大作中提到: 】                                     

: 急 在线等                                                                   

: 非常感谢                                                                     

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  ticket (hehe) 于  (Sat Dec 18 22:12:25 2004)  提到:

Sleep时整个线程都停了,

不知道用两个线程行不行

或者直接在这个函数里面画图

【 在 Lomeo (swineherd) 的大作中提到: 】                                       

: sleep为什么不好使?问题出在什么地方?                                       

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  freshui (五月的风) 于  (Sat Dec 18 22:16:41 2004)  提到:

好像是invalidate不太好使的样子

sleep不是不好使 而是不能刷新视图

用了要等很长时间才能结束 而程序一点反映都没有

【 在 Lomeo (swineherd) 的大作中提到: 】                                       

: sleep为什么不好使?问题出在什么地方?                                       

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  freshui (五月的风) 于  (Sat Dec 18 22:18:57 2004)  提到:

这个我都在视图的ondraw里面画的 应该可以吧?

再画也麻烦啊

                                                                               

【 在 ticket (hehe) 的大作中提到: 】                                           

: Sleep时整个线程都停了,                                                     

: 不知道用两个线程行不行                                                       

: 或者直接在这个函数里面画图                                                   

: ...................                                                         

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  Lomeo (swineherd) 于  (Sat Dec 18 22:25:06 2004)  提到:

能不能直接调用绘制的函数,再sleep一下。

                                                                               

【 在 freshui (五月的风) 的大作中提到: 】                                     

: 好像是invalidate不太好使的样子                                               

: sleep不是不好使 而是不能刷新视图                                             

: 用了要等很长时间才能结束 而程序一点反映都没有                               

: ...................

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  freshui (五月的风) 于  (Sat Dec 18 22:27:17 2004)  提到:

刚才调ondraw后一点自动运行汉诺塔 程序就出问题 给我关了

:)

                                                                               

【 在 Lomeo (swineherd) 的大作中提到: 】                                       

: 能不能直接调用绘制的函数,再sleep一下。                                     

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  Lomeo (swineherd) 于  (Sat Dec 18 22:29:41 2004)  提到:

自己直接getdc来画嘛。。

【 在 freshui (五月的风) 的大作中提到: 】                                     

: 刚才调ondraw后一点自动运行汉诺塔 程序就出问题 给我关了                       

: :)                                                                         

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  freshui (五月的风) 于  (Sat Dec 18 22:31:23 2004)  提到:

                                                                               

能不能详细点啊?呵呵 才学不几天 今天要交个作业

还不是很会啊

:)

【 在 Lomeo (swineherd) 的大作中提到: 】                                       

: 自己直接getdc来画嘛。。                                                     

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  Lomeo (swineherd) 于  (Sat Dec 18 22:35:15 2004)  提到:

具体。..主要意思就是写一个函数来做绘制,跟ondraw()里的绘制差不多。

ondraw里要用的传进来的参数,你可以直接获取嘛。

                                                                               

【 在 freshui (五月的风) 的大作中提到: 】                                     

: 能不能详细点啊?呵呵 才学不几天 今天要交个作业                               

: 还不是很会啊                                                                 

: :)                                                                         

: ...................                                                         

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  freshui (五月的风) 于  (Sat Dec 18 22:38:07 2004)  提到:

                                                                               

        CDC* pDC=GetDc();                                                     

这个不好使啊 :)

没有定义GetDc

偶没有msdn

【 在 Lomeo (swineherd) 的大作中提到: 】                                       

: 具体。..主要意思就是写一个函数来做绘制,跟ondraw()里的绘制差不多。           

: ondraw里要用的传进来的参数,你可以直接获取嘛。                               

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  Lomeo (swineherd) 于  (Sat Dec 18 22:40:03 2004)  提到:

这个怎么不好使了呀?

en ...msdn可以在线查的嘛。

                                                                               

【 在 freshui (五月的风) 的大作中提到: 】                                     

:        CDC* pDC=GetDc();                                                   

: 这个不好使啊 :)                                                           

: 没有定义GetDc                                                               

: ...................                                                         

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  freshui (五月的风) 于  (Sat Dec 18 22:42:26 2004)  提到:

Compiling...

汉诺塔View.cpp

D:\Program Files\Microsoft Visual Studio\MyProjects\汉诺塔\汉诺塔View.cpp(496)

: error C2065: ’GetDc’ : undeclared identifier

D:\Program Files\Microsoft Visual Studio\MyProjects\汉诺塔\汉诺塔View.cpp(496)

: error C2440: ’initializing’ : cannot convert from ’int’ to ’class CDC *’

        Conversion from integral type to pointer type requires reinterpret_cast,

C-style cast or function-style cast

Error executing cl.exe.

汉诺塔.exe - 2 error(s), 0 warning(s)

很郁闷~ google上不去 查了百度都是这样写的啊

【 在 Lomeo (swineherd) 的大作中提到: 】                                       

: 这个怎么不好使了呀?                                                         

: en ...msdn可以在线查的嘛。                                                   

                                                                               

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  Lomeo (swineherd) 于  (Sat Dec 18 22:43:53 2004)  提到:

把绘制函数定义成成员函数嘛。。

【 在 freshui (五月的风) 的大作中提到: 】                                     

Compiling...

汉诺塔View.cpp

D:\Program Files\Microsoft Visual Studio\MyProjects\汉诺塔\汉诺塔View.cpp(496)

: error C2065: ’GetDc’ : undeclared identifier

D:\Program Files\Microsoft Visual Studio\MyProjects\汉诺塔\汉诺塔View.cpp(496)

: error C2440: ’initializing’ : cannot convert from ’int’ to ’class CDC *’

        Conversion from integral type to pointer type requires reinterpret_cast,

C-style cast or function-style cast

Error executing cl.exe.

汉诺塔.exe - 2 error(s), 0 warning(s)

                                                                               

很郁闷~ google上不去 查了百度都是这样写的啊

                                                                               

【 在 Lomeo (swineherd) 的大作中提到: 】                                       

: 这个怎么不好使了呀?                                                         

: en ...msdn可以在线查的嘛。                                                   

                                                                               

☆─────────────────────────────────────☆ 

  freshui (五月的风) 于  (Sat Dec 18 22:50:56 2004)  提到:

呵呵 我就是定义的共有成员函数

在函数里面用的这个

可是……

【 在 Lomeo (swineherd) 的大作中提到: 】                                       

: 把绘制函数定义成成员函数嘛。。                                               

: Compiling...                                                                 

: 汉诺塔View.cpp                                                               

: ...................

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  Lomeo (swineherd) 于  (Sat Dec 18 22:52:24 2004)  提到:

或者用getclientdc(&dc);

好象是这个样子的。你可以查查。。

                                                                               

【 在 freshui (五月的风) 的大作中提到: 】                                     

: 呵呵 我就是定义的共有成员函数                                               

: 在函数里面用的这个                                                           

: 可是……                                                                     

: ...................                                                         

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  Lomeo (swineherd) 于  (Sat Dec 18 22:53:07 2004)  提到:

你的大小写没搞错吧?

                                                                               

【 在 freshui (五月的风) 的大作中提到: 】                                     

: 呵呵 我就是定义的共有成员函数                                               

: 在函数里面用的这个                                                           

: 可是……                                                                     

: ...................

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  freshui (五月的风) 于  (Sat Dec 18 22:53:23 2004)  提到:

哈哈 成功了

非常感谢

:)

我刚才弄错了 :)

                                                                               

【 在 Lomeo (swineherd) 的大作中提到: 】                                       

: 或者用getclientdc(&dc);                                                     

: 好象是这个样子的。你可以查查。。                                             

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  Lomeo (swineherd) 于  (Sat Dec 18 22:54:24 2004)  提到:

不谢不谢。

共同学习一起进步嘛。

【 在 freshui (五月的风) 的大作中提到: 】                                     

: 哈哈 成功了                                                                 

: 非常感谢                                                                     

: :)                                                                         

: ...................

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  freshui (五月的风) 于  (Sat Dec 18 22:56:31 2004)  提到:

呵呵

不过还是有个问题

我要是把窗口拖一下,就不能响应消息了 :)程序就不动了

                                                                               

                                                                               

【 在 Lomeo (swineherd) 的大作中提到: 】                                       

: 不谢不谢。                                                                   

: 共同学习一起进步嘛。                                                         

☆─────────────────────────────────────☆ 

  Lomeo (swineherd) 于  (Sat Dec 18 22:59:06 2004)  提到:

用多线程。

或者在你的递归过程里peekmessage()来处理消息。

                                                                               

【 在 freshui (五月的风) 的大作中提到: 】                                     

: 呵呵                                                                         

: 不过还是有个问题                                                             

: 我要是把窗口拖一下,就不能响应消息了 :)程序就不动了                       

: ...................

                                                                               

                                                                               

                                                                               

☆─────────────────────────────────────☆ 

  freshui (五月的风) 于  (Sat Dec 18 23:06:06 2004)  提到:

哈哈 这个老师今天说了…… 不过就提了一下……

ok了 多谢

【 在 Lomeo (swineherd) 的大作中提到: 】                                       

: 用多线程。                                                                   

: 或者在你的递归过程里peekmessage()来处理消息。

注:转载文章需注明来源:VCer.net 文章地址:http://vcer.net/1173421888734.html

  如果你觉得VCer.net不错,而且你愿意为VCer.net捐赠一元钱,那么点击后面的捐赠按钮吧:) vcer.net捐赠

[回复该贴] [加入个人书签]
[投票结果]

A: 评分 10 0% (0 票)
B: 评分 5 0% (0 票)
C: 评分 0 0% (0 票)
D: 评分 -5 0% (0 票)
E: 评分 -10 0% (0 票)

 


re:请教高手 编写汉诺塔程序的视图显示问题~

...这个程序我编过,可利用GetCurrentTime()读系统时间,再循环判断当前时间是否等于第一次读的时间+延时的时间

mmw119 于 2007-09-22 02:58:55.0 编辑 [回复该贴]