winamp里面的三个对话框可以互相吸引,其中主对话框的移动可以带动子对话框的移动(子对话框又可以带动相连的子对话框),而子对话框的移动就不能带动另外的子对话框,如果只有一个主对话框和一个子对话框,这应该很容易实现,但是有多个对话框时,
移动时这些对话框之间的相互关系就显得比较复杂,请问有什么好的办法在移动时可以做到像winamp一样吗?多谢!

解决方案 »

  1.   

    下面是我的设想:首先,确定主窗口(只有1个)和子窗口。
    主窗口需要记住与自己相关联的子窗口(假如a和b)和关联位置(上下左右四个方位),然后这些子窗口又记住自己相关联的子窗口(例如a记住c,b记住d,但是c不记住a,d不记住b)其次,应该处理窗口的WM_MOVING消息,在消息处理函数中需要根据不同的情况进行不同的处理:
        如果是主窗口,则移动本窗口,并发WM_MOVING消息给关联的子窗口
        如果是子窗口,则
            如果是随其他窗口移动,则移动本窗口,并发WM_MOVING消息给关联窗口,
            否则仅移动本窗口,需要注意的是移动过程中会改变窗口的关联关系
      

  2.   

    其实这很简单,
    将每一个父对话框的位置存入一个全局变量中,
    在其子对话框中的OnTimer里用MoveWindow()来与父对话框保持一致就行了.
      

  3.   

    我做过的和winamp一样不知道能不能找到代码