现在遇到这样一个问题:
在单文档的程序中,我们知道CView是贴在CFrameWnd的前面的,即除了标题、工具栏、菜单栏以外的部分都被CView覆盖了。
现在我们在CView的WM_LBUTTONDOWN中响应事件,在该响应函数中获取CFrameWnd的窗口指针,并依据此指针得到CFrameWnd的设备CDC指针(注意,不是CView的CDC指针),
利用此CDC进行绘图,我们会发现,所画的内容居然在最前面,而不是在CView的下面(因为CFrameWnd在CView的下面),这是为何??????
另外它可以实现在非客户区进行绘图,这说明,CView已经捕获了窗口以外属于CFrameWnd区域的鼠标消息了,这是为何??????
有人能给俺解释一下吗,并给我介绍一下有关CDC和窗口之间的联系,如题

解决方案 »

  1.   

    怎么没人回呢,另外,哪位好心人有GDI的电子文档啊?
      

  2.   

    CFrameWnd应该是象镜框一样包着CView
      

  3.   

    楼上说的只是对了一半,窗口怎么会是一个空心框呢?它是一个连接的封闭的区域(特殊处理过的异形窗口除外),那么势必在CView下面还有它的窗体的一部分,只是被CView覆盖了,只是它比CView大一点多了边框,标题栏,菜单栏,状态栏,工具栏等。
    所以我不明白,当获得了CFrameWnd的设备后在上面画图,“应该”被CView覆盖的地方为何没有被覆盖,这涉及到GDI绘图的一些机制,只是我不清楚,我想让大家告诉我有关的内容。
    绘图时所获得的设备(不一定是当前窗口的设备)与当前绘图的窗口是一种什么关系?
      

  4.   

    难道显示器能显示多层, 呵呵, 显示只有单层,不存在叠加, 
    你绘制的时候既然CView没有刷新,当然能够显示出来