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

另请参阅

IDirectDraw7