Visual c++ 程序在wglmakecurrent时崩溃

Visual c++ 程序在wglmakecurrent时崩溃,visual-c++,opengl,mfc,Visual C++,Opengl,Mfc,我正在VisualStudio2008的MFC应用程序中使用opengl。 在那里,我的项目在wglmakecurrent崩溃了,说: 访问冲突读取位置 这只在特定情况下发生,因此这可能不是驱动程序问题。我还检查了另一台发生同样错误的机器 错误发生在以下功能中的wglMakeCurrent(m_hDC,m_hRC)处: void CCETIGLView::Convert2D(CPoint-win、GLdouble*objx、, GLdouble*objy,GLdouble*objz) { 如果(

我正在VisualStudio2008的MFC应用程序中使用opengl。 在那里,我的项目在wglmakecurrent崩溃了,说:

访问冲突读取位置

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

错误发生在以下功能中的wglMakeCurrent(m_hDC,m_hRC)处:

void CCETIGLView::Convert2D(CPoint-win、GLdouble*objx、, GLdouble*objy,GLdouble*objz) { 如果((MU hDC)和(MU hRC)) {

wglMakeCurrent(m_hDC,m_hRC); }

参数类型如下:

HGLRC m_hRC

HDC m_HDC

t它们是从作为cview子类的glview类中获取的

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

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

此测试

如果((MU hDC)和(MU hRC))

只有在确保m_hDC和m_hRC在类创建时被初始化为0时才有意义,这样人们才能真正知道它们已被初始化。可能您没有这样做,因此这些变量包含非零垃圾,因此被误解为使用有效句柄初始化

将常量初始化添加到构造函数

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

没有提供足够的信息来回答这个问题。你在哪里调用这个函数?这些参数是什么?你是如何创建它们的?等等。除了“我的代码在运行这一行时崩溃”之外,你什么都没说我们不会玩20个问题,我问一个问题,你用尽可能少的信息回答,然后我问一个后续问题,你用尽可能少的信息回答。你需要提供完整的信息,最好是以实际源代码的形式,为我们提供100%的解决此问题所需的信息e、 你需要在你的问题中加入这一点,而不是评论。用更多信息更新了问题。感谢@datenwolf的回答。我已经将它们分配给了0,但仍然是相同的错误。它们也通过了if条件。但是m_hDC显示为“错误:表达式无法计算”。m_hRC显示为“未使用,0”在调试模式下。有什么想法吗?再次感谢。