用mfc写了个汉诺塔的演示程序,用的单线程实现的。现在的问题是每次挪动了一个盘子之后childview不会暂停的,导致结果是所有的盘子瞬间挪到了第三个塔上,我在汉诺塔的Move函数中加了sleep(500)也无济于事,请问如何实现每次挪动一个盘子就暂停一下的功能?要用单线程实现啊。关键的两个函数如下:void Move( Tower& x,Tower& y)
{
y.AddPlate(x.Top());
x.RemovePlate();
HWND hwnd = reinterpret_cast<CMainFrame*>(AfxGetApp()->m_pMainWnd)->m_wndView.GetSafeHwnd();
::PostMessage(hwnd,WM_REFRESH,0,0);
}
LRESULT CChildView::OnRefresh( WPARAM ,LPARAM )
{
Invalidate();
UpdateWindow();
return 0;
}
{
y.AddPlate(x.Top());
x.RemovePlate();
HWND hwnd = reinterpret_cast<CMainFrame*>(AfxGetApp()->m_pMainWnd)->m_wndView.GetSafeHwnd();
::PostMessage(hwnd,WM_REFRESH,0,0);
}
LRESULT CChildView::OnRefresh( WPARAM ,LPARAM )
{
Invalidate();
UpdateWindow();
return 0;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货