新手的问题——关于DirectDraw

spaceturtle 2000-07-21 07:41:00
我照某篇范例写了一个DirectDraw的程序,结果连接的时候出现以下警告和错误:
[C++ Warning] DDUTIL.CPP(23): W8058 Cannot create pre-compiled header: code in header
[Linker Error] Unresolved external 'DirectDrawCreate' referenced from D:\BORLAND\CBUILDER5\PROJECTS\DDUNIT.OBJ
我的原代码如下:(比较长,因为我不知道是哪里的毛病,只好都贴上来。
#include <ddraw.h>
#include <ddutil.cpp>
#include <vcl.h>
#pragma hdrstop

#include "DDUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
LPDIRECTDRAW lpDD;
LPDIRECTDRAWSURFACE lpDDSPrimary;
bool DDReady=false;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
void DeleteDD()
{
if(lpDD!=NULL)
{
if(lpDDSPrimary!=NULL)
{
lpDDSPrimary->Release();
lpDDSPrimary=NULL;
}
lpDD->Release();
lpDD=NULL;
}
}
void InitDD(HWND hwnd)
{
DDSURFACEDESC ddsd;
DirectDrawCreate(NULL, &lpDD, NULL);
lpDD->SetCooperativeLevel(hwnd,DDSCL_EXCLUSIVE and DDSCL_FULLSCREEN);
lpDD->SetDisplayMode(640,480,8);
ddsd.dwSize=sizeof(ddsd);
ddsd.dwFlags=DDSD_CAPS;
ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE;
lpDD->CreateSurface(&ddsd,&lpDDSPrimary,NULL);
}
void ShowDD()
{
HDC hdc;
if(DDReady)
{
lpDDSPrimary->Restore();
DDReLoadBitmap(lpDDSPrimary,"BACK.BMP");
if(lpDDSPrimary->GetDC(&hdc)==DD_OK)
{
TextOut(hdc,10,10,"这就是Direct Draw写到屏幕上的风景画,按ESC键结束...",50);
lpDDSPrimary->ReleaseDC(hdc);
}
}
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
ShowDD();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
DeleteDD();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
InitDD(Handle);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if(Key==VK_ESCAPE)
{
DeleteDD();
Application->Terminate();
}

}
...全文
178 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mach 2000-07-22
  • 打赏
  • 举报
回复
bcb我没怎么用过,我都是用vc的,不过我想bcb应该也差不多吧,是在项目里加的
spaceturtle 2000-07-22
  • 打赏
  • 举报
回复
请问怎么连ddraw.lib?另外,我用同样的C++ Builder编译它自带的一个ddraw的例子就没有问题,可是我找不出两者的差别。
mach 2000-07-22
  • 打赏
  • 举报
回复
别客气
spaceturtle 2000-07-22
  • 打赏
  • 举报
回复
mach,
谢谢您的帮助,问题已经解决了,确实是ddraw.lib没有连接,我是新手,不懂这边的规矩,不知道给50分够不够?希望您不要见怪。
mach 2000-07-22
  • 打赏
  • 举报
回复
一定是没连ddraw.lib吧

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧