|
求助!DirectDraw 全屏模式切换到桌面再切换回去 就锁频错误。。。
while (GetMessage (&msg, NULL, 0, 0))
{
//MyGame.GameMain();// 如果在这里调用这个函数(下面的这个函数删除掉) 切换到桌面
//在切换回该程序 就切换不了 是未响应(没切换回该程序就未响应了)
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
//游戏的主循环
MyGame.GameMain();//
}
XXX::GameMain()
{
HWND ahwnd = GetForegroundWindow();
if(ahwnd != m_hWnd)//if(!m_bRunGame)
{
return 1;
}
else
{
Sleep(33); //窗口模式 马上渲染的话会内存寻址错误
}
//........
//.........
//渲染之类的....................
}//end of GameMain()
渲染的时候锁屏错误, 很奇怪,如果不渲染倒是不出错误,但程序切换进去后 未响应 =。=
如果是窗口模式 切换多少次都没关系 都正常运行
全屏模式的DirectDraw协作为:
m_lpdd->SetCooperativeLevel(m_hWnd,
DDSCL_ALLOWMODEX | DDSCL_FULLSCREEN |
DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT )))
全屏模式的窗口风格为:
SetWindowLong(m_hWnd,GWL_STYLE, WS_POPUP | WS_VISIBLE);
窗口模式的DirectDraw协作为:
m_lpdd->SetCooperativeLevel(m_hWnd,DDSCL_NORMAL)
窗口模式的窗口风格为:
SetWindowLong(m_hWnd,GWL_STYLE, WS_CAPTION |
WS_SYSMENU |
WS_MINIMIZEBOX);
郁闷死了阿 调试了几个小时还是没解决
哪位大大抽点宝贵时间 帮我指出错误并纠正。。。
在此万分感谢啦 |
|