我想做一个纸牌游戏,CreateWindow的时候用static做了纸牌的控件,然后纸牌大小的控件重叠在一起,点击重叠的部分,最先相应WM_LBUTTONDOWN的消息的是最底下一个控件!请问有什么方法让最上面的控件响应消息呢?

解决方案 »

  1.   


    派生一个CStatic,自行处理WM_LBUTTONDOWN消息
      

  2.   

    “最先相应WM_LBUTTONDOWN的消息的是最底下一个控件”
    还有这事?
      

  3.   

    "纸牌大小的控件重叠在一起"你这种思路就是错的, 控件响应顺序和tab顺序也是有关的.我个人感觉你应该画个图表示纸牌,然后画很多重叠的图.然后你自己管理这个牌的顺序,当用户点击了纸牌区域,你再根据你的纸牌顺序响应你点击的纸牌.
      

  4.   


    是吗!我本来想是在界面上一张位图一张位图地画的!后来一想,做一个窗体,窗体显示纸牌位图,走窗体的消息让其响应WM_LBUTTOWN更好控制一些,另外自定义了一个CCard类,里面还可以放一些其它的信息!不过出现了上面的问题!你说tab顺序,有什么API函数可以用吗
      

  5.   

    真的是这样!看来Windows处理消息的顺序恰好和需要的相反在主窗口内重新建立消息发送的顺序吧
      

  6.   

    重载下消息响应,对于不是最上层的窗口收到消息直接转发给最上层不就得了,
    不过还是不要用这么多窗口来作,用图片好些。
    Tab order 其实就是Zorder,getwindowpos可以获得
      

  7.   

    确实改变一下窗体的z order可以奏效,不过这种方法貌似真的有点问题,控件太多了,而且会出一些其它的问题,直接画bmp会比较好!谢谢各位了