int CTestexeView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER, PFD_TYPE_RGBA,
24,
0, 0, 0, 0, 0, 0,
0, 0, 0,
0, 0, 0, 0,
32,
0,
0,
PFD_MAIN_PLANE,
0,
0, 0, 0
}; m_hDC = GetDC()->GetSafeHdc();
int nPixelFormat = ::ChoosePixelFormat(m_hDC, &pfd);
::SetPixelFormat(m_hDC, nPixelFormat, &pfd);
m_hRC = ::wglCreateContext(m_hDC);
::wglMakeCurrent(m_hDC, m_hRC);
return 0;
}void CTestexeView::OnDestroy()
{
CView::OnDestroy();
::wglMakeCurrent(NULL, NULL);
::wglDeleteContext(m_hRC);
}BOOL CTestexeView::OnEraseBkgnd(CDC* pDC)
{
return true;
}void CTestexeView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30, 1, -3, 3);
glMatrixMode(GL_MODELVIEW);
glViewport(0, 0, cx, cy);
glShadeModel(GL_FLAT);
}BOOL CTestexeView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style |= (WS_CLIPSIBLINGS|WS_CLIPCHILDREN);
return CView::PreCreateWindow(cs);
}/////////////////////////////////////////////////////////////////////////////
// CTestexeView drawingvoid CTestexeView::OnDraw(CDC* pDC)
{
glClearColor(1, 1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
gluLookAt(5, 5, 5, 0, 0, 0, 0, 0, 1);
glColor3f(1, 0, 0);
auxWireCylinder(1, 1);
auxWireSphere(1);
SwapBuffers(m_hDC);
}
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER, PFD_TYPE_RGBA,
24,
0, 0, 0, 0, 0, 0,
0, 0, 0,
0, 0, 0, 0,
32,
0,
0,
PFD_MAIN_PLANE,
0,
0, 0, 0
}; m_hDC = GetDC()->GetSafeHdc();
int nPixelFormat = ::ChoosePixelFormat(m_hDC, &pfd);
::SetPixelFormat(m_hDC, nPixelFormat, &pfd);
m_hRC = ::wglCreateContext(m_hDC);
::wglMakeCurrent(m_hDC, m_hRC);
return 0;
}void CTestexeView::OnDestroy()
{
CView::OnDestroy();
::wglMakeCurrent(NULL, NULL);
::wglDeleteContext(m_hRC);
}BOOL CTestexeView::OnEraseBkgnd(CDC* pDC)
{
return true;
}void CTestexeView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30, 1, -3, 3);
glMatrixMode(GL_MODELVIEW);
glViewport(0, 0, cx, cy);
glShadeModel(GL_FLAT);
}BOOL CTestexeView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style |= (WS_CLIPSIBLINGS|WS_CLIPCHILDREN);
return CView::PreCreateWindow(cs);
}/////////////////////////////////////////////////////////////////////////////
// CTestexeView drawingvoid CTestexeView::OnDraw(CDC* pDC)
{
glClearColor(1, 1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
gluLookAt(5, 5, 5, 0, 0, 0, 0, 0, 1);
glColor3f(1, 0, 0);
auxWireCylinder(1, 1);
auxWireSphere(1);
SwapBuffers(m_hDC);
}
解决方案 »
- WSAAsyncSelect select了多个socket之后 绑定的一个窗口 遇到的问题
- 如何用VC实现一个VB样式的对象属性列表框?
- 如何让用VC++生成的XML文档,能够按照缩进方式保存?
- 求教:CreateCompatibleBitmap()
- 想问一下大家,我最近刚开始学VC++
- 在分割窗口的界面中我如何从一个窗口向另外一个窗口postmessage()呢?
- 有工作经验的人请进 帮助未成才少年
- 如何自动注册ocx控件,例如winsock
- 如何用代码设置默认打印机的纸张大小(mfc)
- VC调用WORD里面函数,写表格时出错,不明白咋回事
- 请【KiGhost】进来,解释你为什么发那么多0分的帖子?
- #########CFILEDIALOG
申请DC后需要释放。
{ m_pDC =
}
加了
{ ......
m_pDC = GetDC();
m_hDC = m_pDC->GetSafeDC();
......
}CTestexeView::OnDestroy()
{
......
if(m_pDC) m_pDC->ReleaseDC();
......
}还是提示内存泄露
Detected memory leaks!
Dumping objects ->
{128} normal block at 0x048E3FA0, 16 bytes long.
Data: < ? > 01 00 00 00 00 00 00 00 02 00 00 00 E0 3F 8E 04
{127} normal block at 0x048E3FE0, 16 bytes long.
Data: < ? ?> 00 00 00 00 00 00 F0 3F 00 00 00 00 00 00 F0 3F
Object dump complete.
是不是我的opengl开发包有问题?
::wglDeleteContext(m_hRC);这句放到析构函数中调用