我爱黑客网首页 设为首页
加入收藏
联系我们
 首 页  技术文章 下载中心 站长学院 交流论坛
 软件:
 文章:        教程:
 推荐: 我爱黑客网论坛
 
 
 
 
   
黑软: Q Q 软件 木马间谍 探嗅监听 溢出攻击 加密解密 漏洞扫描 脚本注入 远程控制 综合利用 聊天工具  
 
技术文章: 爱黑新闻 | 黑客攻防 | 网络技术 | 程序设计 | 系统操作 | 本站动态 | 业界动态 | 安全公告 | 病毒公告 | 八卦黑客
 
 
您当前的位置:我爱黑客 -> 程序设计 -> C++ -> C++图象 -> 文章内容  
栏目导航
· C++综合 · C++通信
· C++视图 · C++图象
· C++系统 · C++多媒体
· C++界面 · C++文件
· C++数据库 · C++网络
热门文章
· 用C++ Builder对图像进..
· 在CB中进行DirectX编程..
· 在CB中进行DirectX编程..
· 在CB中进行DirectX编程..
· 在CB中进行DirectX编程..
· 使用双缓冲技术绘制曲..
· 用CB实现图像的特技显..
· Win 95/NT下OpenGL编程..
· 实现窗体的渐变背景
· 在C++Builder中实现快..
· 属性表标签上的位图在..
· 在C++ Builder中进行D..
相关文章

· 在C++Builder利用Ne..
· 在C++Builder中编写..
· 在CB5中使用ADO数据..
· 在C++Builder中使用..
· 如何在C++Builder中..
· 在CB6下基于api函数..
· 在CB程序中控制Wind..
· 在C++ Builder中实现..
· Win9x下隐藏程序不出..
· 在C++Builder中自定..
查看更多与在CB中进行DirectX编程(2)相关内容

在CB中进行DirectX编程(2)
作者:幽火  来源:www.5ihack.com  发布时间:2007-1-8 17:23:45  发布人:ghostfire

减小字体 增大字体

  2.2.3 dx1源程序

  2.2.3.1 dx1主要文件的组成为:工程文件(dx1.bpr)、窗口文件(main.cpp)、头文件(main.h)。

  2.2.3.2 头文件main.h

  #ifndef mainH
#define mainH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
(略)
private: // User declarations
LPDIRECTDRAW FAR lplpDD; /* 获得的 DirectDraw 接口指针 */
LPDIRECTDRAW2 FAR lplpDD2; /* 获得的 DirectDraw2 接口指针 */
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
2.2.3.3 程序文件main.cpp
#include <vcl.h>
#include "d:\tools\dx5sdk\sdk\inc\ddraw.h"
#pragma hdrstop
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
LPGUID FAR lpDevices[10]; /* 保存枚举设备的标识指针 */
struct DisplayModes { DWORD Width,Height,Depth,Rate; } DisplayMode[100];
/* 保存显示设备支持的显示方式 */
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//设备枚举回调函数---------------------------------------------------------------------------
BOOL WINAPI EnumDeviceCallBack(GUID FAR *lpGUID,LPSTR lpDevice,
LPSTR lpDeviceName,
LPVOID lpContext)
{ static char i=0;
lpDevices[i]=lpGUID;
i++;
Form1->ComboBox1->Items->Add((AnsiString)lpDevice+"--"+(AnsiString)lpDeviceName);
if(i<10)
return(DDENUMRET_OK);
else
return(DDENUMRET_CANCEL);
}
//枚举设备---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ComboBox1->Clear();
if(FAILED(DirectDrawEnumerate(EnumDeviceCallBack,NULL)))
Edit1->Text="Enumerate Devices failed!";
else
Edit1->Text="Enumerate Devices OK!";
ComboBox1->ItemIndex=0;
Button1->Enabled=false;
Button2->Enabled=true;
}
//创建DirectDraw对象---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
LPGUID FAR lpD=lpDevices[ComboBox1->ItemIndex];
if(FAILED(DirectDrawCreate(lpD,&lplpDD,NULL)))
Edit1->Text="DirectDraw Create failed!";
else
{
Edit1->Text="DirectDraw Create OK!";
ComboBox1->Enabled=false;
Button2->Enabled=false;
Button3->Enabled=true;
}
}
//获得IDirectDraw2接口---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if(FAILED(lplpDD->QueryInterface(IID_IDirectDraw2,(LPVOID *)&lplpDD2)))
Edit1->Text="Get IDriectDraw2 Interface Failed!";
else
{
Edit1->Text="Get IDriectDraw2 Interface OK!";
lplpDD->Release(); /* 释放IdirectDraw接口 */
Button3->Enabled=false;
Button4->Enabled=true;
}
}
//设置协作级别---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
DWORD dwFlags=0;
if(CheckBox1->Checked) dwFlags=dwFlags|DDSCL_ALLOWMODEX;
if(CheckBox2->Checked) dwFlags=dwFlags|DDSCL_ALLOWREBOOT;
if(CheckBox3->Checked) dwFlags=dwFlags|DDSCL_EXCLUSIVE;
if(CheckBox4->Checked) dwFlags=dwFlags|DDSCL_FULLSCREEN;
if(CheckBox5->Checked) dwFlags=dwFlags|DDSCL_NORMAL;
if(CheckBox6->Checked) dwFlags=dwFlags|DDSCL_NOWINDOWCHANGES;
if(FAILED(lplpDD2->SetCooperativeLevel(Handle,dwFlags)))
Edit1->Text="Set set cooperative level Failed!";
else
{
Edit1->Text="Set cooperative level OK!";
GroupBox2->Enabled=false;
Button4->Enabled=false;
Button5->Enabled=true;
}
}
//枚举显示模式的回调函数---------------------------------------------------------------------------
BOOL WINAPI EnumDisplayModesCallBack(LPDDSURFACEDESC lpDesc,
LPVOID lpContext)
{
static int i=0;
char buff[256];
wsprintf(buff,"%dx%dx%dx%d",
lpDesc->dwWidth,
lpDesc->dwHeight,
lpDesc->ddpfPixelFormat.dwRGBBitCount,
lpDesc->dwRefreshRate);
Form1->ComboBox2->Items->Add(buff);
DisplayMode[i].Width=lpDesc->dwWidth;
DisplayMode[i].Height=lpDesc->dwHeight;
DisplayMode[i].Depth=lpDesc->ddpfPixelFormat.dwRGBBitCount;
DisplayMode[i].Rate=lpDesc->dwRefreshRate;
i++;
if(i<100)
return(DDENUMRET_OK);
else
return(DDENUMRET_CANCEL);
}
//枚举显示模式---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
ComboBox2->Clear();
if(FAILED(lplpDD2->EnumDisplayModes(DDEDM_STANDARDVGAMODES,
NULL,
NULL,
(LPDDENUMMODESCALLBACK)EnumDisplayModesCallBack)))
Edit1->Text="Enumerate Display Modes failed!";
else
{
Edit1->Text="Enumerate Display Modes OK!";
ComboBox2->ItemIndex=0;
Button5->Enabled=false;
Button6->Enabled=true;
}
}
//设置显示模式---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
if(ComboBox2->ItemIndex<0)
{
ShowMessage("请先在DDraw2下拉框中选择一种显示方式");
return;
}
if(FAILED(lplpDD2->SetDisplayMode(
DisplayMode[ComboBox2->ItemIndex].Width,
DisplayMode[ComboBox2->ItemIndex].Height,
DisplayMode[ComboBox2->ItemIndex].Depth,
DisplayMode[ComboBox2->ItemIndex].Rate,
0)))
Edit1->Text="Set DisplayMode failed!";
}
//退出dx1---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(lplpDD2) lplpDD2->Release();
}

查看更多与在CB中进行DirectX编程(2)相关内容

[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:
下一篇文章:
      在CB中进行DirectX编程(1)       在CB中进行DirectX编程(4)
∷相关文章评论∷   (评论内容只代表网友观点,与本站立场无关!) [发表评论]
 
 
 
 
晋ICP备05008232   维护网络安全、传播安全技术才是我们的目标! 
 
关于本站 - 网站帮助 - - 下载声明 - 友情连接 -网站地图