CreateViewGLContex产生RC并使之成为当前RC。WglCreateContext返回一个RC的句柄。在你调用CreateViewGLContex之前,你必须用SetWindowPixelFormat(hDC)将与设备相关的像素格式设置好。wglMakeCurrent将RC设置成当前RC。传入此函数的DC不一定就是你产生RC的那个DC,但二者的设备句柄(Device Context)和像素格式必须一致。假如你在调用wglMakeforCurrent之前已经有另外一个RC存在,wglMakeforCurrent就会把旧的RC冲掉,并将新RC设置为当前RC。另外你可以用wglMakeCurrent(NULL, NULL)来消除当前RC。
我们要在OnDestroy中把绘制环境删除掉。但在删除RC之前,必须确定它不是当前句柄。我们是通过wglGetCurrentContext来了解是否存在一个当前绘制环境的。假如存在,那么用wglMakeCurrent(NULL, NULL)来把它去掉。然后就可以通过wglDelete-Context来删除RC了。这时允许视类删除DC才是安全的。注:一般来说,使用的都是单线程的程序,产生的RC就是线程当前的RC,不需要关注上述这一点。但如果使用的是多线程的程序,那我们就特别需要注意这一点了,否则会出现意想不到的后果。
三、实例
下面给出一个简单的二维图形的例子(这个例子都是以上述设置为基础的)。
用Classwizard为CGLSample2view添加WMSIZE的消息处理函数OnSize,使之如程序2所示。
用Classwizard为CGLSample2view添加WM_PAINT的消息处理函数OnPaint,使之如程序3所示。
文章来源于领测软件测试网 https://www.ltesting.net/










