IDirectDraw7::SetCocolLevel 方法 (ddraw.h)
決定應用程式的最上層行為。
語法
HRESULT SetCooperativeLevel(
[in] HWND unnamedParam1,
[in] DWORD unnamedParam2
);
參數
[in] unnamedParam1
用於應用程式的視窗句柄。 設定為呼叫應用程式的最上層視窗句柄, (不是最上層視窗所建立之任何子視窗的句柄) 。 當 dwFlags 參數中指定DDSCL_NORMAL旗標時,此參數可以是 NULL。
[in] unnamedParam2
此值包含下列一或多個旗標:
DDSCL_ALLOWMODEX
允許使用 Mode 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 Foundation Classs (MFC) ,傳遞至這個方法的視窗句柄必須識別應用程式的最上層視窗,而不是衍生的子視窗。 若要擷取 MFC 應用程式的最上層視窗句柄,您可以使用下列程式代碼:
HWND hwndTop = AfxGetMainWnd()->GetSafeHwnd();
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | ddraw.h |
程式庫 | Ddraw.lib |
Dll | Ddraw.dll |