在单文档程序里,建立四个分割窗体,RuntimeClass都是同一个自定义类CLoadView, CLoadView是对OPenGL环境的初始化及画出三条线段,还有对单击事件的响应.但是在运行时只有其中一个窗体能够正确显示黑色背景及三条线段,其它三个窗体都是灰色,而且不能显示三条线段出来.但是每个窗体都能响应单击事件.请问怎样才能使得四个窗体都能正确显示呢?先谢啦.

解决方案 »

  1.   

    窗口在绘制之前,需要 MakeCurrent,是用完了一定要 MakeCurrent NULL,否则其它窗口无法得到OpenGL进行绘制。OpenGL 的 render context 可以是一个,假设它是 m_hRC,在 OnDraw() 中
    调用 MakeCurrent m_hRC, pDC 绑定 CDC 和 OpenGL
    然后进行绘制
    最后,调用 MakeCurrent NULL, NULL。释放OpenGL。每一个 view 都需要这么做。在一个进程中,某一个时刻只能有一个 view/wnd 在绘制,
    只有最后一个 MakeCurrent m_hRC, pDC 调用时有效的,并且他会冲掉之前的调用。但线程情况下,上面的做法已经足够了,如果是多线程的需要给 m_hRC 添加互斥变量。----------------------------------------
    http://alphasun.icpcn.com/alphasun/index.htm