我用DDraw7.0做了一个程序,是全屏显示的,但如果开着QQ,或点击Windows按键后,窗口最小化后,再击最大化,窗口就闪不能画,怎么解决啊
我用DDraw7.0做了一个程序,是全屏显示的,但如果开着QQ,或点击Windows按键后,窗口最小化后,再击最大化,窗口就闪,就是主窗口画面与DDRAW的画面交替显示,,怎么解决啊
int CMyDirectDraw::Init(HWND hwnd, int nScreen_Width, int nScreen_Height, CString strFuncName)
{
// pCMainFrame = *)AfxGetMainWnd();
// OutputDebugString(strFuncName);
// OutputDebugString("CMyDirectDraw::Init:START\n");
if (FAILED(DirectDrawCreateEx(NULL, (void **)&m_lpdd, IID_IDirectDraw7, NULL)))
{
return(0);
}
//
if(FAILED(m_lpdd->SetCooperativeLevel(hwnd,
DDSCL_ALLOWMODEX | DDSCL_FULLSCREEN |
DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT)) ) //
{
return(0);
}
if (FAILED(m_lpdd->SetDisplayMode(nScreen_Width, nScreen_Height, SCREEN_BPP,0,0)))
{
return(0);
}
DDRAW_INIT_STRUCT(m_ddsd); //清零的宏;
m_ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
m_ddsd.dwBackBufferCount = 1;
m_ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;
//创建主表面;
if (FAILED(m_lpdd->CreateSurface(&m_ddsd, &m_lpddsprimary, NULL)))
{
return(0);
}
m_ddsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER;
if (FAILED(m_lpddsprimary->GetAttachedSurface(&m_ddsd.ddsCaps, &m_lpddsback)))
{
return(0);
}
//设置后备缓冲区的剪裁区;
RECT screen_rect= {0,0,nScreen_Width,nScreen_Height};
m_lpddclipper = AttachClipper(m_lpddsback,1,&screen_rect, "CMyDirectDraw::Init\n");
return 1;
}