我的程序继承于CScrollView类,窗口上设置了几个按钮,点击“开始”按钮就设置一个计时器,游戏开始,但一直到游戏结束这个过程中点所有按钮都没有反应(包括框架窗口的X),游戏结束会弹出个MassageBox,点击MassageBox的确定后,所有按钮又都可以用了,这是为什么。我希望能设置一个暂停按钮,但现在在游戏运行过程中控件用不了,怎么办?!MFC控件游戏

解决方案 »

  1.   

    一直困在计时器里面了吧(Settimer(1,3000);)
    一般的程序都是单线程的,点了“开始”的话就一直卡在计时器里面了,就和Sleep一样,窗体自然没反应。
    要“暂停”的话,建议多线程:
    点击“开始”后,开一个工作线程单独Sleep,如果点击“暂停”就把工作线程销毁掉。
      

  2.   

    我没学过多线程诶,您可以给个示例源码吗?而且是所有的按钮控件包括框架窗口的最大最小化和关闭按钮都失效,最诡异的是水平滚动条失效而垂直滚动条是好的,还有个细节是我点击开始按钮后其实按钮都还可以用,但是点击界面(我有个WM——LBUTTONDOWN的消息),这之后就不行了。
      

  3.   

    1.问蒙我了……网上搜索的这个应该还可以:http://haobinnan.blog.51cto.com/775253/658446、http://www.cnblogs.com/zqrferrari/archive/2010/07/07/1773113.html。多搜几个看看
    调用API就行了,大概(我对线程的研究还没到线程同步的级别,= =。只是粗略玩了下AfxBeginThread)
    2.正常……发送了WM_LBUTTONDOWN程序的线程卡在计时器里面没法响应……
      

  4.   

    1.问蒙我了……网上搜索的这个应该还可以:http://haobinnan.blog.51cto.com/775253/658446、http://www.cnblogs.com/zqrferrari/archive/2010/07/07/1773113.html。多搜几个看看
    调用API就行了,大概(我对线程的研究还没到线程同步的级别,= =。只是粗略玩了下AfxBeginThread)
    2.正常……发送了WM_LBUTTONDOWN程序的线程卡在计时器里面没法响应……更诡异的是进入调试时是正常的,然后把断点全删了继续运行控件就全失效了,当然垂直滚动条依然坚挺。
      

  5.   

    顶一下,debug退出后输出框显示如下肯定返回1那里是错了,但问题是:1、为什么有那么多线程(我一直以为我的程序是单线程的),2、怎么调试
      

  6.   

    没有啊,就是用MFC类向导建的一个单文档的工程,今天试着实现自绘按钮时照着网上的文章加了个#program(lib,***)//忘记名字了,不过我已经删掉那句话了
      

  7.   

    http://msdn.microsoft.com/zh-SG/library/9btc885t
      

  8.   

    不好意思我没看明白,您能讲讲吗我在C**App里没看到那个IsIdleMessage函数,类向导里也没有那个函数可以添加。
      

  9.   

    现在大概可以总结一下问题的规律:一点击屏幕发出WM_LBUTTONDOWN,所有控件就失效,而点击“开始”设置计时器,假如没点屏幕,所有控件就都是好的