CView就地编辑控件布局

时间:2016-01-22 02:13:48

标签: visual-c++ mfc cview

我有CView作为占位符,可以垂直堆叠多个Ctrl,以占用所有可用空间。我想要做的是用鼠标抓住水平边界并向上或向下拖动以调整Ctrl高度。

问题是CView的子控件拦截鼠标消息而不是CView父窗口(WM_LBUTTONDOWNWM_MOUSEMOVE等)。 Ctrl还可以处理这些消息,以满足不相关的编辑要求。

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

1 个答案:

答案 0 :(得分:1)

我认为这可以很容易地完成如下:

  • 在子控件之间留一个小间隙(比如2或3像素)。这可以用相同的颜色或稍微不同的颜色绘制。

  • 将光标设置为主CView的IDC_SIZENS

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

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

这样所有消息仍会转到te子控件,除非鼠标高于那些2到3像素的“分割器”。

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