IDirectDraw7::SetCooperativeLevel 方法 (ddraw.h)
确定应用程序的顶级行为。
语法
HRESULT SetCooperativeLevel(
[in] HWND unnamedParam1,
[in] DWORD unnamedParam2
);
参数
[in] unnamedParam1
用于应用程序的窗口句柄。 设置为调用应用程序的顶级窗口句柄 (不是由顶级窗口) 创建的任何子窗口的句柄。 在 dwFlags 参数中指定DDSCL_NORMAL标志时,此参数可以为 NULL。
[in] unnamedParam2
此值由以下一个或多个标志组成:
DDSCL_ALLOWMODEX
允许使用模式 X 显示模式。 仅当存在DDSCL_EXCLUSIVE和DDSCL_FULLSCREEN标志时,才能使用此标志。
DDSCL_ALLOWREBOOT
允许 CTRL+ALT+DEL 在独占 (全屏) 模式下正常工作。
DDSCL_CREATEDEVICEWINDOW
此标志仅在 Windows 98 和 Windows 2000 中受支持。 指示 DirectDraw 将为此 DirectDraw 对象创建和管理默认设备窗口。
DDSCL_EXCLUSIVE
请求独占级别。 此标志必须与 DDSCL_FULLSCREEN 标志一起使用。
DDSCL_FPUPRESERVE
调用应用程序关心 FPU 状态,不希望 Direct3D 以应用程序可见的方式修改它。 在此模式下,Direct3D 会在每次需要修改 FPU 状态时保存和还原 FPU 状态。
DDSCL_FPUSETUP
调用应用程序可能会将 FPU 设置为最佳 Direct3D 性能 (单个精度和异常) 禁用,因此 Direct3D 不需要每次都显式设置 FPU。 这是默认状态。
DDSCL_FULLSCREEN
独占模式所有者负责整个主图面。 可以忽略 GDI。 此标志必须与 DDSCL_EXCLUSIVE 标志一起使用。
DDSCL_MULTITHREADED
请求多线程安全的 DirectDraw 行为。 这会导致 Direct3D 更频繁地使用全局关键部分。
DDSCL_NORMAL
该应用程序充当典型的 Windows 应用程序。 此标志不能与 DDSCL_ALLOWMODEX、DDSCL_EXCLUSIVE 或 DDSCL_FULLSCREEN 标志一起使用。
DDSCL_NOWINDOWCHANGES
不允许 DirectDraw 在激活时最小化或还原应用程序窗口。
DDSCL_SETDEVICEWINDOW
此标志仅在 Windows 98 和 Windows 2000 中受支持。 指示 hWnd 参数是此 DirectDraw 对象的设备窗口的窗口句柄。 此标志不能与 DDSCL_SETFOCUSWINDOW 标志一起使用。
DDSCL_SETFOCUSWINDOW
此标志仅在 Windows 98 和 Windows 2000 中受支持。 指示 hWnd 参数是此 DirectDraw 对象的焦点窗口的窗口句柄。 此标志不能与 DDSCL_SETDEVICEWINDOW 标志一起使用。
返回值
如果该方法成功,则返回值DD_OK。
如果失败,该方法可能会返回以下错误值之一:
- DDERR_EXCLUSIVEMODEALREADYSET
- DDERR_HWNDALREADYSET
- DDERR_HWNDSUBCLASSED
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
- DDERR_OUTOFMEMORY
注解
此方法必须由创建应用程序窗口的同一线程调用。
应用程序必须设置DDSCL_EXCLUSIVE或DDSCL_NORMAL标志。
必须设置DDSCL_EXCLUSIVE标志来调用可能会对其他应用程序的性能产生不利影响的函数。
此方法与 IDirectDraw7::SetDisplayMode 方法之间的交互不同于其 IDirectDraw 对应方法。
如果使用 Microsoft 基础类 (MFC) ,则传递给此方法的窗口句柄必须标识应用程序的顶级窗口,而不是派生子窗口。 若要检索 MFC 应用程序的顶级窗口句柄,可以使用以下代码:
HWND hwndTop = AfxGetMainWnd()->GetSafeHwnd();
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | ddraw.h |
Library | Ddraw.lib |
DLL | Ddraw.dll |