分割窗口的问题:
一个窗口被分成了三列,每一个列有一个视图。
1 由于主框架窗口的大小可以被改变,可以被移动。分割窗口的大小也可以被改变。这就造成了与分割窗口相对应的视图的大小也被改变。想知道,如果窗口的大小被改变,如何得到每一个视图的大小。
2 我想实现这样的效果:MOUSE可以在任意一个视图中点击、拖动,相应的视图可以画点和长方形。不知道这应该如何处理,应该响应哪些消息?

解决方案 »

  1.   

    1,可以用view的指针来得到大小。 pView ->GetClientRect(&rect);
      也可以用:
    int width,height,min;
    m_wndSplitter.GetColumnInfo(0, width, min);
    第一个参数指定得到列(0,1,2...),第二个参数返回列的宽度。
    m_wndSplitter.GetRowInfo(0, height, min);
    height中是第一行的高度。也就是每个视图的高度。2,视图响应WM_LBUTTONDOWN消息,设置一个标志flag = 1,画点。 flag = 0,记下这个点,当WM_MOUSEMOVE的时候,将新点和刚才保存的点画RECT.基本上原理就是这样。
      

  2.   

    画图可以参考msdn的例子:DRAWCLI
      

  3.   

    2 绘制的代码可以分别放在每个view的OnMouseMove()、OnLButtonDown()等函数中,这样鼠标进入每个view会自动响应,原理与单个view相同;