我作了很长时间数据库的开发,现在突然作一个关于Windows UI的
东西,就遇上了问题。像winamp那样的在一个进程中创建了多个
窗口的技术是怎样实现的呢?还有,各个窗口之间的关系是怎么样
的呢?是父子关系么?怎样通信呢?最后,像winamp的窗体的停靠
是怎样实现的呢?请各位哥哥姐姐叔叔阿姨帮帮我吧!

解决方案 »

  1.   

    在一个process中创建多个UI Thread,它们相互独立,各线程的是否为激发状态可以用WaitSingleObject(HINSTANCE hInst)。要是线程要交换数据的话,就直接
    在进程的主线程中用HeapAlloc,返回就是各线程可共享堆.我给的不具体,望后来者给出详解或另解.
      

  2.   

    1.首先按需要创建多个CDialog模板,并分别创建各自的类;(实现)
    2.在主线程中new出来,并Create、ShowWindow;(实现)
    3.重载主线程的OnMove,在其中给出各窗口的MoveWindow代码;(停靠)
    4.在new窗口的时候,按需要传入相互的指针,以备参数调用;(通讯)
    5.如有必要,可以定义许多消息和相应的响应函数,用于各窗体间通讯;(通讯)
    6.各窗体间的关系是平级的;(相互关系)
      

  3.   

    1.首先按需要创建多个CDialog模板,并分别创建各自的类;(实现)
    2.在主线程中new出来,并Create、ShowWindow;(实现)
    3.重载主窗口的OnMove,在其中给出各窗口的MoveWindow代码;(停靠)
    4.在new窗口的时候,按需要传入相互的指针,以备参数调用;(通讯)
    5.如有必要,可以定义许多消息和相应的响应函数,用于各窗体间通讯;(通讯)
    6.各窗体间的关系是平级的;(相互关系)