程序退出时留在桌面 需要刷新才能消除

ga6840 2010-07-18 09:40:29
我的一个c窗口程序关联到了 d3dDevice
SwapEffect 使用到了 D3DSWAPEFFECT_FLIP
并且创建时 没有选择 标题栏(应该说什么都没有吧。。)

在win xp 上,程序退出时出现了 ‘污染’桌面的情况,需要刷新才能消除.
但是在win7上有没有出现这种现象(我想是不是D3DSWAPEFFECT_FLIP导致的,因为dx sdk 2010 上有一句话:“D3DSWAPEFFECT_OVERLAY is only available in Direct3D9Ex running on Windows 7 (or more current operating system”))

以下是窗口建立和退出的过程:



INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, INT )
{
// Register the window class
WNDCLASSEX wc =
{
sizeof( WNDCLASSEX ), CS_DBLCLKS | CS_OWNDC |CS_HREDRAW | CS_VREDRAW, MsgProc, 0L, 0L,
GetModuleHandle( NULL ), NULL, NULL, NULL, NULL,
L"D3D app", NULL
};
RegisterClassEx( &wc );

// Create the application's window
hWnd = CreateWindow( L"D3D app", L"D3D app",
WS_POPUP, 100, 100, 300, 300,
NULL, NULL, wc.hInstance, NULL );

// Initialize Direct3D
if(! SUCCEEDED( InitD3D( hWnd ) ) )
{
return 1;
}
//.... (d3d的一些准备工作)

// Show the window
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );

// Enter the message loop
MSG msg;
ZeroMemory( &msg, sizeof( msg ) );
int lo_exit_process = 0;
while( msg.message != WM_QUIT )
{
Render();//d3d 的g_pd3dDevice->Present( );
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );

}

if(KEYDOWN(VK_ESCAPE))
{
PostQuitMessage( 0 );

}

Sleep(35);
}



Cleanup();//d3d

UnregisterClass( L"D3D app", wc.hInstance );

return 0;
}



请见过这样情况的人说说你们的经验,帮助我一下
我会非常感谢的。
...全文
325 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ga6840 2010-07-19
  • 打赏
  • 举报
回复
顶一下
ga6840 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhouzhipen 的回复:]
系统的一个BUG,没办法。
可以这样:在清理完D3D环境之后立即用SHELL相关函数刷新桌面。
[/Quote]

谢谢,zhouzhipen

那么请问 zhouzhipen,在什么情况下 会产生这一个bug? 是不是用到了directx ?是不是用到WS_POPUP?
我也会自己试试 ,但不知道你是否知道?
稍后给分
BlueMap 2010-07-19
  • 打赏
  • 举报
回复
不懂,感觉三楼正确。。。
黑泡泡选手 2010-07-19
  • 打赏
  • 举报
回复
同意楼上的说法,刷新一下桌面!
zhouzhipen 2010-07-19
  • 打赏
  • 举报
回复
系统的一个BUG,没办法。
可以这样:在清理完D3D环境之后立即用SHELL相关函数刷新桌面。
ga6840 2010-07-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 ga6840 的回复:]
我的一个c窗口程序关联到了 d3dDevice
[/Quote]

对不起 更正:我的一个窗口程序关联到了 d3dDevice

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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