⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bcjq103.txt

📁 c++ builder 的一些txt文档
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                            显示模式DDraw2
                            
                            TEdit
                            Edit1
                            Text
                            (空)
                            
                            ReadOnly
                            true
                            
                            TGroupBox
                            GroupBox1
                            Caption
                            状态
                            
                            TCombBox
                            ComboBox1
                            Text
                            (空)
                            
                            TCombBox
                            ComboBox2
                            Text
                            (空)
                            
                            TGroupBox
                            GroupBox2
                            Caption
                            协作级别
                            
                            TCheckBox
                            CheckBox1
                            Caption
                            DDSCL_ALLOWMODEX
                            
                            TCheckBox
                            CheckBox2
                            Caption
                            DDSCL_ALLOWREBOOT
                            
                            TCheckBox
                            CheckBox3
                            Caption
                            DDSCL_EXCLUSIVE
                            
                            Checked
                            true
                            
                            TCheckBox
                            CheckBox4
                            Caption
                            DDSCL_FULLSCREEN
                            
                            Checked
                            true
                            
                            TCheckBox
                            CheckBox5
                            Caption
                            DDSCL_NORMAL
                            
                            TCheckBox
                            CheckBox6
                            Caption
                            DDSCL_NOWINDOWCHANGES
                            
                            Checked
                            true
                            
                            TButton
                            Button1
                            Caption
                            设备的枚举
                            
                            TButton
                            Button2
                            Caption
                            创建DirectDraw对象
                            
                            Enabled
                            false
                            
                            TButton
                            Button3
                            Caption
                            获得COM的IDIRECT2接口
                            
                            Enabled
                            false
                            
                            TButton
                            Button4
                            Caption
                            设置协作级别
                            
                            Enabled
                            false
                            
                            TButton
                            Button5
                            Caption
                            DDraw2显示模式的枚举
                            
                            Enabled
                            false
                            
                            TButton
                            Button6
                            Caption
                            设置DDraw2的显示方式
                            
                            Enabled
                            false
                            
                            
                             
                            
                            表2.1 dx1控件对象属性设置一览表
                            
                            确定已安装了DirectX5以上的SDK,且在C++Builder中已经将Project/Options/中标签页“Directories/Conditionals”上的“Include 
                            Path”和“Library Path”添加了DirectX5或以上SDK的路径。
                            
                            在窗口模块中包含 #include 
                            "ddraw.h" 头文件。
                            
                            现在可以开始编写代码了,我们按照按钮的顺序逐个实现每个步骤的任务。
                            
                            2.2.2.1 设备的枚举
                            
                            DirectDraw提供了一个函数DirectDrawEnumerate 
                            来实现设备枚举功能,此函数的调用格式为:
                            
                            HRESULT DirectDrawEnumerate (LPDDENUMCALLBACK 
                            lpcallback LPVOID lpContext)
                            
                            (1)参数lpcallback是一个回调函数的地址指针。所谓回调函数是程序员自己编写的函数,当枚举函数每枚举一个设备时就调用这个回调函数一次,并把当前枚举的设备有关信息通过参数传递给回调函数处理。
                            
                            在dx1程序中,回调函数命名为EnumDeviceCallBack,负责将每次枚举出的设备的描述和名称加入到ComboBox1的列表中去,并把设备标识地址指针保存到一个lpDevices数组中以便创建DirectDraw对象时使用。
                            
                            (2)参数lpContext是一用户定义的上下文变量,我们仅取值NULL就可以了。
                            
                            (3)DirectDrawEnumerate为回调函数指针,该函数的格式为:
                            
                            BOOL WINAPI EnumDeviceCallBack (GUID FAR *lpGUID,
                            
                            LPSTR lpDevice,
                            
                            LPSTR lpDeviceName,
                            
                            LPVOID lpContex)
                            
                            其中:参数lpGUID 
                            为当前枚举设备标识地址指针;参数lpDevice 
                            为设备描述的地址指针;参数lpDeviceName 
                            为设备名称的地址指针;参数 lpContext 
                            为上下文变量地址指针,这里我们不使用它。在dx1程序中,此回调函数负责将所枚举设备的名称和描述显示在ComboBox1中,并将设备标识地址保存到lpDevices数组中。为了简化程序,这里的lpDevices数组只采用了静态数组,最多允许保存10个元素。后面在保存显示模式枚举信息时使用的DisplayModes数组也是为了简化程序,在实际编程时可以考虑动态分配。 
                            需要说明的是,回调函数应该是一个独立的函数,不要把它们声明为窗口类的成员函数(否则回调不能进行),而只要声明为普通函数就可以了。
                            
                            2.2.2.2 创建DirectDraw对象
                            
                            在进行DirectDraw编程之前,必需首先用DirectDrawCreate函数创建DirectDraw对象,并获得该对象的入口指针。该函数格式如下:
                            
                            HRESULT DirectDrawCreate(GUID FAR *lpDD,
                            
                            LPDIRECTDRAW FAR &lplpDD,
                            
                            Iunknown FAR *p)
                            
                            (1)参数lpDD为指定的设备标识指针(为NULL时是主设备),在dx示例程序中的第一个按钮“设备的枚举”采用静态数组保存枚举设备的标识指针,在第二个按钮创建DirectDraw对象时,可根据用户在ComboBox1中的选择,提供一个设备标识指针,以便对该设备创建DirectDraw对象。
                            
                            (2)参数 lplpDD 为对象创建成功后的获得IditrctDraw接口指针。
                            
                            (3)参数p未使用,直接为NULL。
                            
                            2.2.2.3 获得COM的IDIRECT2接口
                            
                            由于DirectX采用了对象组件模型COM技术(这里不再介绍),因此如果我们需要使用DirectX5或以上版本提供的功能,就需要获得更高的IDirectDraw接口,例如:如果我们使用DirectX5开发包,就需要获得IDirectDraw2接口。
                            
                            可以利用HRESULT IdirectDraw::QueryInterface方法获得高版本接口:
                            
                            lpDD->QueryInterface(IID_IDirectDraw2,
                            
                            (LPVOID *)LPDIRECTDRAW2 &lpDD2)
                            
                            参数IID_IDirectDraw2是一个常量。
                            lpDD2是为获得的IdDrectDraw2接口指针。
                             
                            
                            如果您需要使用更高版本的开发包,也可以用此方法获得IDirectDraw3或更高的接口。高版本接口获得后,就可以释放低版本的接口了,方法是:lpDD->Release();
                            
                            2.2.2.4 设置协作级别
                            
                            玩过DirectX游戏的朋友可能都领略过“全屏独占”和“窗口”两种图形模式,这就可以称为不同的协作级别,它控制应用程序与系统及其它应用程序的交互程度,因此我们必需用HRESULT 
                            IDIRECTDRAW2::SetCooperateLevel方法设置应用程序的协作级别。
                            
                            LpDD2->SetCooperateLevel(HWND handle,DWORD 
                            dwFlag)
                            
                            (1)参数handle是当前应用程序窗口的句柄,在C++Builder中,TForm类的Handle属性就是当前应用程序窗口的句柄。
                            
                            (2)参数dwFlag是协作标志,可以为表2.2中定义之一或多个之和。
                            
                            序号
                            标志
                            说明
                            
                            (1)
                            DDSCL_ALLOWMODEX
                            允许使用Mode X模式。必须与(3)、(4)组合使用
                            
                            (2)
                            DDSCL_ALLOWREBOOT
                            当使用(3)、(4)时允许用户进行热启动
                            
                            (3)
                            DDSCL_EXCLUSIVE
                            使用独占方式,与(4)一起使用
                            
                            (4)
                            DDSCL_FULLSCREEN
                            全屏方式,与(3)一起使用
                            
                            (5)
                            DDSCL_NORMAL
                            以普通应用程序窗口方式运行
                            
                            (6)
                            DDSCL_NOWINDOWCHANGES
                            DirectDraw不能自动最小化或恢复窗口
                            
                            
                             
                            
                            表2.2 dwFlag标志定义
                            
                            在我们的dx1示例程序中,默认设置为:
                            
                            DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN|DDSCL_NOWINDOWCHANGES

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -