关于这个问题我想大部分编程的同行一定都会碰到过吧。    我现在想做象vb里右边的工程资源管理器窗口、属性窗口和窗口布局那种三个窗口粘在一起分布的布局方式,或者象photoshop里界面右边各个属性窗口粘在一起的那种。    1、如何实现移动一个窗口,碰到另一个窗口的某部位时,这个窗口会很好的粘在另一个窗口的下面,还有就是一个窗口插入两个窗口中。
    2、三个窗口都粘在一起时,如何实现两个窗口之间的上下调整,从而改变窗口高度。    我自己也做过一些这样的调整,可是效果不太理想,各位有没有好的经验和算法,不妨说一说,让我这个对于编程半路出家的女生可以更好地完成任务,谢谢了。如果有嫌分少的高手可以再加给你。

解决方案 »

  1.   

    简单方法:
    在新建工程里面选择 VB Application Wizard,然后在想到窗口中的第二步选择 Explorer Style
      

  2.   

    非常感谢TechnoFantasy(www.applevb.com),为我解决了一些问题。
    可是还有第一个问题没有解决。另外我还想问一下,窗口移动事件是哪个?
      

  3.   

    Public Const WM_WINDOWPOSCHANGED = &H47
    Public Const WM_WINDOWPOSCHANGING = &H46
    Public Const WM_MOVE = &H3
    Public Const WM_MOVING = &H216拦截这几个消息
      

  4.   

    hisofty(瘦马) :
    能具体点吗,怎么拦截
      

  5.   

    需要对窗口实现子类化来实现消息拦截,下面是几个教程:
    http://learn.tsinghua.edu.cn/homepage/012074/ef/15th/pages/tiptrick/page2.htm
    http://www.mypcera.com/softxue/vb/new/m72.htm
    http://www.hongen.com/pc/program/apitutor/api0005/api01.htm
      

  6.   

    一言难尽,还是看看楼上提供的教程的好,再看看msdn中那几个消息的区别
      

  7.   

    TechnoFantasy(www.applevb.com):
    http://learn.tsinghua.edu.cn/homepage/012074/ef/15th/pages/tiptrick/page2.htm运行时出现以下错误怎么办。实时错误“453”
    找不到 DLL 入口点 RegisterServiceProcess in kernel32
      

  8.   

    第一个问题“如何实现移动一个窗口,碰到另一个窗口的某部位时,这个窗口会很好的粘在另一个窗口的下面,还有就是一个窗口插入两个窗口中”还是没有解决。大家清帮帮忙呀。也就是我想在窗口移动过程中,判断移动的位置。但是我不知道这个移动的事件是什么,如果要用api拦截的话,到底要怎么做。判断移动的位置的代码到底要放在哪里?