递归程序怎么中止,等待其他事件发生,然后再继续? 见题。我写了一个汗诺塔程序,当方块移动的时候,我想让鼠标控制他的移动,就是鼠标按一下,他自己按递归程序的进度走一次,怎么实现?注意:我的是单进程 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 上次看到过您的贴子100分呢。有个函数叫WaitForSingleObject(),是进程同步用的。应该可以达到目标。 void COhniiView::OnRButtonUp(UINT nFlags, CPoint point) { CDC* pDC=GetDC(); f(n,s[0],s[1],s[2],pDC); CView::OnRButtonUp(nFlags, point);}void COhniiView::f(int nn,Stock& x,Stock& y,Stock& z,CDC* pDC){ if(nn>0) { f(nn-1,x,z,y,pDC); x.move(y,pDC); f(nn-1,z,y,x,pDC); }};怎么改动可以一步一步执行 程序可读性有点差呀:(n,s[0],s[1],s[2],都是啥呀? 又不叫你读,我是问如何在递归程序的中间设置等待其他消息的方法。void COhniiView::f(int nn,Stock& x,Stock& y,Stock& z,CDC* pDC){ if(nn>0) { f(nn-1,x,z,y,pDC); //等待其他键按下 x.move(y,pDC); f(nn-1,z,y,x,pDC); }}; 呵呵,用得着多线程同步吗?============================================================================http://www.betajin.com/alphasun/index.htm 给我发信息请附带原帖地址http://alphasun.18en.com/ http://shakingtoolkit.9126.com/DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析 不太懂你的意思,不过你要等待消息的方法我倒是有! while() { GetMessage(msg,NULL,NULL,NULL); if(msg->message == WM_LBUTTONDOWN ) { m_pSplashWnd->HideSplashScreen(); break; } } 设一个bool值 变量,m_bRun;改变这个值就可以控制了这函数最好在另外一个线程中void COhniiView::f(int nn,Stock& x,Stock& y,Stock& z,CDC* pDC){ if(nn>0) { f(nn-1,x,z,y,pDC); while(!m_bRun) {} //等待其他键按下 x.move(y,pDC); f(nn-1,z,y,x,pDC); }}; 那样的无限循环会把整个CPU占满,怎么还会给其他程序执行的时间 关于静态库的问题 好久没来了,想念csdn了,发帖祝贺自己登陆!! 回调函数如何用 请教:asp.net中加入ActiveX控件,如何响应鼠标事件。 谁有MSHTML 关于网页数据抓取方面的资料 在线等一个问题~~ 急等大家帮忙~~~ 关于glReadPixels(...)函数的用法,哪里出错了,谢谢!!! 关于内存方面的两个问题? 有关VC使用ODBC方式连接SQL SERVER的老问题,知道的都可以进来发言,来者有分 高分请教:有关ActiveX的一些问题 [心得]一个值得注意的问题-----CoInitialize(NULL) 请教HOOK的几个问题,谢谢!!
有个函数叫WaitForSingleObject(),是进程同步用的。应该可以达到目标。
{
CDC* pDC=GetDC();
f(n,s[0],s[1],s[2],pDC);
CView::OnRButtonUp(nFlags, point);
}void COhniiView::f(int nn,Stock& x,Stock& y,Stock& z,CDC* pDC)
{
if(nn>0) {
f(nn-1,x,z,y,pDC);
x.move(y,pDC);
f(nn-1,z,y,x,pDC);
}
};
怎么改动可以一步一步执行
void COhniiView::f(int nn,Stock& x,Stock& y,Stock& z,CDC* pDC)
{
if(nn>0) {
f(nn-1,x,z,y,pDC);
//等待其他键按下
x.move(y,pDC);
f(nn-1,z,y,x,pDC);
}
};
http://www.betajin.com/alphasun/index.htm 给我发信息请附带原帖地址
http://alphasun.18en.com/ http://shakingtoolkit.9126.com/
DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析
while()
{
GetMessage(msg,NULL,NULL,NULL);
if(msg->message == WM_LBUTTONDOWN )
{
m_pSplashWnd->HideSplashScreen();
break;
}
}
改变这个值就可以控制了
这函数最好在另外一个线程中
void COhniiView::f(int nn,Stock& x,Stock& y,Stock& z,CDC* pDC)
{
if(nn>0) {
f(nn-1,x,z,y,pDC);
while(!m_bRun)
{}
//等待其他键按下
x.move(y,pDC);
f(nn-1,z,y,x,pDC);
}
};