我有CView
作为占位符,可以垂直堆叠多个Ctrl,以占用所有可用空间。我想要做的是用鼠标抓住水平边界并向上或向下拖动以调整Ctrl高度。
问题是CView
的子控件拦截鼠标消息而不是CView
父窗口(WM_LBUTTONDOWN
,WM_MOUSEMOVE
等)。 Ctrl还可以处理这些消息,以满足不相关的编辑要求。
是否有人能够提供建议或提供对此尺寸/编辑要求的可能解决方案的参考。这种情况与Visual Studio中的资源编辑器类似。只有我希望在实时环境中进行编辑。
答案 0 :(得分:1)
我认为这可以很容易地完成如下:
在子控件之间留一个小间隙(比如2或3像素)。这可以用相同的颜色或稍微不同的颜色绘制。
将光标设置为主CView的IDC_SIZENS
。
在主CView中处理鼠标消息(当鼠标悬停在该间隙上时)(向下,移动,...)。
在“拖动”时调整子控件的大小。
这样所有消息仍会转到te子控件,除非鼠标高于那些2到3像素的“分割器”。
如果留下一个小间隙实际上没有选择,那么你必须捕获CView中的所有鼠标消息并检查它们是否在边界上。如果没有,请将它们转发(或默认)到鼠标光标下方的子窗口。