2016-01-22 59 views
1

我有一个CView,充当占位所有可用空间的多个Ctrl垂直堆叠的占位符。我想要做的是用鼠标抓住水平边界并向上或向下拖动以调整Ctrl高度。CView就地编辑控件布局

的问题是,孩子Ctrl键的的CView截获的鼠标消息,而不是CView父窗口(WM_LBUTTONDOWNWM_MOUSEMOVE等)。 Ctrl也处理这些消息以获得无关的编辑要求。

任何人都可以提供建议或提供对这种尺寸/编辑要求的可能解决方案的参考。这种情况与Visual Studio中的资源编辑器有些相似。只有我希望在现场环境中编辑。

+0

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

回答

1

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

  • 离开子控件(如2或3个像素)之间小的差距。这可以用相同的颜色或稍微不同的颜色绘制。

  • 将光标设置为主要CView的IDC_SIZENS

  • 在主CView中处理鼠标消息(当鼠标悬停在该间隙上时)(向下移动,..)。

  • 在'拖动'调整子控件的大小。

通过这种方式,除鼠标位于2至3像素的“分隔符”之外时,所有消息仍然会传送给子控件。

如果留下一个小小的空白是没有选择的,那么您必须在CView中捕获所有鼠标消息并检查它们是否在边框上。如果不是,则将它们转发(或默认)到鼠标光标下方的子窗口。