关于nehe的opengl的一个简单的问题

ontheline 2008-06-24 07:24:47
刚刚才开始看nehe的opengl的书籍,第二章里面介绍了一个画三角的小程序
按F1可以在全屏和窗口之间切换,但是为什么在窗口显示的时候会发生闪烁的显现呢?
请哪位达人指点下,代码如下:

LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_ACTIVATE:
{
if (!HIWORD(wParam))
{
active=TRUE;
}
else
{
active=FALSE;
}
return 0;
}
case WM_SYSCOMMAND:
{
switch(wParam)
{
case SC_SCREENSAVE:
case SC_MONITORPOWER:
return 0;
}
break;
}
case WM_CLOSE:
{
PostQuitMessage(0);
return 0;
}
case WM_KEYUP:
{
keyboard[wParam]=FALSE;
return 0;

}
case WM_KEYDOWN:
{
keyboard[wParam]=TRUE;
return 0;
}
case WM_SIZE:
{
ResizeWindow(LOWORD(lParam),HIWORD(lParam));
return 0;
}
case WM_CREATE:
{
DefWindowProc(hWnd,uMsg,wParam,lParam);
return 0;
}
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
MSG msg;
BOOL done=FALSE;
if (MessageBox(NULL,"Would you like to run the progrmme in Fullscreen mode?","Start fullscreen?",MB_YESNO|MB_ICONINFORMATION)==IDNO)
{
fullscreen=FALSE;
}
if (!CreateGLWindow("OpenGL Framework",640,480,16,fullscreen))
{
return 0;
}
while (!done)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message==WM_QUIT)
{
done=TRUE;

}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
else
{
if (active)
{
if (keyboard[VK_ESCAPE])
{
done=TRUE;

}
else
{
DrawGLScene();
SwapBuffers(hDC);
}

}
if (keyboard[VK_F1])
{
keyboard[VK_F1]=FALSE;
KillWindow();
fullscreen=!fullscreen;
if (!CreateGLWindow("OpenGL FrameWork",640,480,16,fullscreen))
{
return 0;
}

}
}
}
KillWindow();
return(msg.wParam);

}
...全文
54 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangf1983 2009-04-21
  • 打赏
  • 举报
回复
改变了显示模式,重绘
闪烁正常的
giant1st 2008-10-06
  • 打赏
  • 举报
回复
问题很简单:
我刚下载了 那个程序看了一下: 是用VS2003写的,楼主可以在VS2005下面经过转换后打开,稍加调试即可得到答案,闪的问题 是下面的语句:在函数CreateGLWindow中
if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
上面的语句 改变了显示模式 所以闪了一下 ,呵呵

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧