程序在wglmakecurrent崩溃

时间:2012-11-05 04:07:41

标签: visual-c++ opengl mfc

我在visual studio 2008的MFC应用程序中使用opengl。 我的项目在wglmakecurrent说:

  

访问违规阅读位置

这仅在某种情况下发生,因此这可能不是驱动程序问题。而且我还检查了发生同样错误的另一台机器。

错误发生在以下函数中的wglMakeCurrent(m_hDC,m_hRC):

  

void CCETIGLView :: Convert2D(CPoint win,GLdouble * objx,                                        GLdouble * objy,GLdouble * objz)   {   if((m_hDC)&&(m_hRC))   {

     

wglMakeCurrent(m_hDC,m_hRC);       }

参数有以下几种类型:

  

HGLRC m_hRC;

     

HDC m_hDC;

从一个glview类中获取它,这是一个cview的子类。

当我检查wglMakeCurrent函数时,它为GetLastError()返回0。 当渲染某个选项并且其他选项正常工作时会发生这种情况。

我使用单线程,因此多线程问题也不计算在内。

1 个答案:

答案 0 :(得分:0)

此测试

  

if((m_hDC)&&(m_hRC))

只有确保在创建类时将m_hDC和m_hRC初始化为0才有意义,这样才能确实告诉它们它们已初始化。可能你没有这样做,所以这些变量包含非零垃圾,因此被误解为用有效句柄初始化。

为构造函数添加常量初始化

CCETIGLView::CCETIGLView() :
    m_hDC(0), m_hRC(0)
{
    // ...