Visual c++ CView控件布局的就地编辑

Visual c++ CView控件布局的就地编辑,visual-c++,mfc,cview,Visual C++,Mfc,Cview,我有一个CView,它充当垂直堆叠的几个Ctrl的占位符,以便占据所有可用空间。我想做的是用鼠标抓住一个水平边界,然后上下拖动它来调整Ctrl高度 问题在于CView的子Ctrl键截取鼠标消息,而不是CView父窗口(WM_LBUTTONDOWN,WM_MOUSEMOVE等)。Ctrl还处理这些消息以满足无关的编辑需求 是否有人能够提供建议或提供参考,以解决此规模/编辑要求的可能解决方案。这种情况与VisualStudio中的资源编辑器类似。只有我希望在实时环境中进行编辑。我认为这很容易做到,如

我有一个
CView
,它充当垂直堆叠的几个Ctrl的占位符,以便占据所有可用空间。我想做的是用鼠标抓住一个水平边界,然后上下拖动它来调整Ctrl高度

问题在于
CView
的子Ctrl键截取鼠标消息,而不是
CView
父窗口(
WM_LBUTTONDOWN
WM_MOUSEMOVE
等)。Ctrl还处理这些消息以满足无关的编辑需求


是否有人能够提供建议或提供参考,以解决此规模/编辑要求的可能解决方案。这种情况与VisualStudio中的资源编辑器类似。只有我希望在实时环境中进行编辑。

我认为这很容易做到,如下所示:

  • 在子控件之间留一个小间隙(例如2或3像素)。这可能是在相同的颜色,或略有不同的阴影绘制

  • 将主视图的光标设置为
    IDC\u SIZENS

  • 在主视图(向下,移动,…)中处理鼠标消息(当鼠标位于该间隙上方时)

  • “拖动”时,调整子控件的大小

这样,所有消息仍将转到te子控件,除非鼠标位于2到3像素的“拆分器”上方


如果真的没有留下一个小的间隙,那么您就必须捕获CView中的所有鼠标消息,并检查它们是否在边界上。如果没有,请将它们转发(或默认)到鼠标光标下方的子窗口。

指向图片的链接可能会有所帮助。