八.作等级和显示模式 我不需要说太多。Windows编程设置协作级别你只需要调用IDirectDraw7::SetCooperativeLevel()函数;设置显示模式你就调用IDirectDraw7::SetDisplayMode()函数。就这么简单!先来看看协作级别。这就是函数原形: HRESULT SetCooperativeLevel( 返回的类型是HRESULT,你应该已经熟悉它了。对于所有的DirectX函数调用,你都可以用SUCCEEDED()和FAILED()宏检测调用的结果。以下是函数SetCooperativeLevel()的参数: · HWND hWnd:很熟悉吧!传递主窗口的句柄给它,使Windows知道谁将使用它的资源。 · DWORD dwFlags:这个也很眼熟吧!每次我们看到dwFlags参数,几乎都有一个大的标志常量列表供我们选择,并且可以用“|”组合。这次也不会让你失望的哦! 1.SCL_ALLOWMODEX:启用Mode X 显示模式(如320×200,320×240或者320×400)。该标志只能用于DDSCL_EXCLUSIVE和DDSCL_FULLSCREEN模式。 2.SCL_ALLOWREBOOT:在独占模式中启用Ctrl+Alt+Del组合键功能。 3.SCL_EXCLUSIVE:请求独占模式,必须与DDSCL_FULLSCREEN同时使用。 4.SCL_FULLSCREEN:独占模式的拥有者负责整个主表面,GDI被忽略,必须与DDSCL_EXCLUSIVE同时使用。 5.SCL_NORMAL:表示常规的Windows应用程序,不能与DDSCL_ALLOWMODEX、DDSCL_EXCLUSEIVE或DDSCL_FULLSCREEN标志同时使用,在该模式下运行的应用程序不能进行页交换或者更改主调色板。 6.SCL_NOWINDOWCHANGES:防止DirectDraw最小化或恢复应用程序窗口。 还有几个标志常量我们暂时用不到,就不说了。由于我们要建立一个全屏的640×480×16的显示模式,所以我们得这样设置: lpdd7->ooperativeLevel(hwnd, DDSCL_ALLOWREBOOT | DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN); 现在协作级别已经设置好了,让我们再看看改变显示模式的函数: HRESULT SetDisplayMode( 别忘了用宏去检测调用函数的成功或失败!大多数的参数同你料想的差不多: · DWORD dwWidth,dwHeight:以象素为单位,新显示模式的尺寸。 · DWORD dwBPP:新显示模式的色彩深度。就是每一个象素有多少位字节。可以设置为8,16,24或32。警告:很多显示卡不支持24-bits。 · DWORD dwRefreshRate:屏幕的刷新频率。但你最好设置为0,使用默认的刷新频率。 · DWORD dwFlags:对不起,这次没有列表了^_^,唯一的选择是DDSDM_STANDARDVGAMODE,它把显示模式设置为0x13(DOS程序员的好朋友),取代了Mode X的320×200×8的模式。如果你还想使用其它的模式(你可能经常需要),没有问题,把它设置为0好了。 这些就是显示模式的设置,事先最好了解你的显示卡支持的显示模式,它们通常都支持640×480,800×600,1024×768等等,这些都是标准的模式。但是如果你非得设置成542×366的模式,你可能就会得到错误的反馈。科技在发展吗,什么都是可能的。让我们继续吧! |
鏀惰棌鎴愬姛鏌ョ湅鏀惰棌>>
正在阅读:DirectX游戏开发入门DirectX游戏开发入门
2005-07-18 09:48
出处:
责任编辑:moningfeng
键盘也能翻页,试试“← →”键