标 题: [合集] 请教高手 编写汉诺塔程序的视图显示问题~
发信站: 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()来处理消息。