小弟想实现个功能 就是类似于VC自带的对话框编辑器的功能
把控件拖到一个平台上然后改变大小 位置  尝试如下
我在单文档下 动态创建了一个按钮 但发现选中按钮后根本不进VIEW的鼠标消息  而是响应按钮的click消息 如何才能实现选中这个按钮然后拖动 改变大小呢  

解决方案 »

  1.   

    响应控件的WM_NCHITTEST消息,不调用基类函数,直接返回HTCAPTION。
      

  2.   

    顺便问一下 动态创建的 该如何响应WM_NCHITTEST呢
      

  3.   

    你自己派生一个类,用这个类来构造对象,然后Create,在自己的类中响应消息。
      

  4.   

    有没有其他的方法呢   因为还要涉及到其他的东西 对于每个控件(button,edit....)都派生一个类的话 有些
      

  5.   

    可以重载窗口的PreTranslateMessage函数,自己处理鼠标消息,用MoveWindow调整控件位置和大小,最后返回TRUE,不调用基类函数。
      

  6.   

    VC6的示例程序里面有的,MSDN里面找DlgEdit,就是你做的这东西。
      

  7.   


    非常正确 在PreTranslateMessage中判断.如果你要做的话 就要扔掉对单个控件的消息控制.
    也许有帮助:http://blog.csdn.net/smallfishff/archive/2007/11/14/1884671.aspx
      

  8.   

    个人认为:
    VC自带的对话框编辑器的中的按钮不是真正的button,是个特别的窗口而已。它只不过是根据你的调整,记录下控件的坐标、风格等信息,然后存放在.rc文件中。工程中的.rc文件可以使用记事本打开。
      

  9.   

    动态创建怎么了?  一样可以在BEGIN_MESSAGE_MAP() END_MESSAGE_MAP()之间加消息响应,只不过要自己加罢了
      

  10.   

    简单来说,对话框编辑器里面的“控件”全部不是窗口,自己画出来的,连对话框都是画出来的。画法也很简单,调用DrawFrameControl即可,当然DrawCaption/DrawEdge/DrawFocusRect等等API也都可以用。不过拖放操作就得自己花点心思响应鼠标消息了。
      

  11.   

    DrawFrameControl有button,menu,scroll 
    可是有些东西是没有的 比如edit 这些用什么呢
      

  12.   

    MSDN里面找DlgEdit,示例程序里是这样的:所有控件都是真实控件,全部子类化,截获WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_LBUTTONUP等鼠标消息,自己处理拖动。外面一个框是对话框画的,由于是画在对话框上,因此拖动调整大小是由对话框处理鼠标消息,完了设置一下控件尺寸。
      

  13.   

    用jameshooo的方法完成了 比较方便 给分了