在扩展模式下将DirectX窗口从一个监视器移动到另一个监视器

问题描述

| 我有一个简单的DirectX-9测试应用程序,我想以扩展模式从一台显示器移到另一台显示器。 在主监视器上创建了窗口和设备,并正确绘制了场景,但是当我将窗口移至第二个监视器时,它将冻结。没有错误,即使当前的调用也不会失败,但是窗口没有更新。当我将窗口移回主监视器后,一切就恢复了。 谁能给我一个提示,让我无法实现这个工作?     

解决方法

        确保枚举适配器模式。您使用的模式可能与显卡有关。同样,对于适配器支持的每种格式,都有基于可用模式数量的显示模式列表。这是循环浏览这些模式的快速示例:
D3DDISPLAYMODE mode;
UINT adapter = 0;
D3DFORMAT format = D3DFMT_R5G6B5;
LPDIRECT3D9 pD3D;

pD3D = Direct3DCreate9( D3D_SDK_VERSION );

if(!pD3D) return FALSE;

UINT availableModes = pD3D->GetAdapterModeCount(Adapter,Format);

if(!availableModes) return FALSE;

for(UINT i = 0; i < availableModes; i++)
{
    pD3D->EnumAdapterModes( adapter,format,i,&mode);
    formatModeList->push_back(mode); // A list of modes
}
另外,如果您处于窗口模式,请确保不使用翻转。在窗口模式下,您共享正在运行的应用程序的当前视频模式。不幸的是,您必须使用较慢的发条过程。希望这会有所帮助。 问候, 将     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...