使用DX9怎样才能实现全屏透明窗口的游戏?游戏执行后不影响windows其它程序的使用。
程序运行后就类似一个全屏屏保一样(比如:多彩气泡屏保),但是在运行这个全屏程序的同时,还要不影响用户使用其它软件。比如用户正在运行多彩气泡屏保,同时又在使用office编辑文档(编辑文档时,多彩气泡不会关闭)。
效果就像前几年的“圣诞小礼物下雪机”一样。
[解决办法]
这个其实和D3D本身关系不大,是需要设置窗体的扩展属性:
//鼠标点击穿透开关
void CPicDlg::OnBnClickedCheck1()
{
// TODO: 在此添加控件通知处理程序代码
DWORD Style,
ExStyle = ::GetWindowLong(pPicShowDlg->GetSafeHwnd(), GWL_EXSTYLE);
if (ExStyle&WS_EX_TRANSPARENT)
{
Style = /*WS_SIZEBOX
[解决办法]
*/WS_POPUP
[解决办法]
WS_SYSMENU;
ExStyle &= ~WS_EX_TRANSPARENT;
}
else
{
Style = WS_POPUP
[解决办法]
WS_SYSMENU;
ExStyle
[解决办法]
= WS_EX_TRANSPARENT;
}
::SetWindowLong(pPicShowDlg->GetSafeHwnd(), GWL_STYLE, Style);
::SetWindowLong(pPicShowDlg->GetSafeHwnd(), GWL_EXSTYLE, ExStyle);
::PostMessage(pPicShowDlg->GetSafeHwnd(), WM_SYSCOMMAND, SC_MINIMIZE, 0);
::PostMessage(pPicShowDlg->GetSafeHwnd(), WM_SYSCOMMAND, SC_RESTORE, 0);
}