|
已经做好了连接,还是有错。
// canvasFrame.cpp : implementation file
#include "stdafx.h"
#include "canvasr.h"
#include "canvasFrame.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// canvasFrame
//从这里开始创建DIRECTDRAW
LPDIRECTDRAW7 pDD7; //DIRECTDRAW 对象指针
LPDIRECTDRAWSURFACE7 pPSur;//主绘图页 对象指针(Primary Surface)
LPDIRECTDRAWSURFACE7 pBBuf;//后缓冲区 对象指针(Back Buffer)
LPDIRECTDRAWSURFACE7 pOPla;//幕后暂存区 对象指针(Offscreen Plain)
DDSCAPS2 caps; //定义SSCAPS2结构体变量
DDSURFACEDESC2 desc; //定义DDSURFACEDESC2结构体变量
HRESULT result; //返回信息的变量
canvasFrame::canvasFrame()
{
Create(NULL,"绘图窗口",WS_POPUP);
hdc = ::CreateCompatibleDC(NULL);
bitmap = (HBITMAP): oadImage(NULL,"bground.bmp",IMAGE_BITMAP,640,480,LR_LOADFROMFILE);
::SelectObject(hdc,bitmap);
pOPla->GetDC( &hdc1 );
::BitBlt( hdc1 , 0 , 0 , 640 , 480 , hdc , 0 , 0 , SRCCOPY );
pOPla->ReleaseDC( hdc1 );
}
canvasFrame::~canvasFrame()
{
delete hdc;
delete hdc1;
delete bitmap;
pDD7->Release();
pPSur->Release();
pOPla->Release();
}
BEGIN_MESSAGE_MAP(canvasFrame, CFrameWnd)
//{{AFX_MSG_MAP(canvasFrame)
ON_WM_CREATE()
ON_WM_PAINT()
ON_WM_CHAR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// canvasFrame message handlers
int canvasFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
result = DirectDrawCreateEx(NULL, (VOID**)&pDD7, IID_IDirectDraw7, NULL);
if (result != DD_OK)
MessageBox("建立DirectDraw对象失败!");
result = pDD7->SetCooperativeLevel(m_hWnd,DDSCL_EXCLUSIVE |
DDSCL_FULLSCREEN|DDSCL_ALLOWREBOOT );
if(result !=DD_OK)
MessageBox("设定程序协调层级失败!");
result = pDD7->SetDisplayMode(640,480,16,0,DDSDM_STANDARDVGAMODE);
if(result !=DD_OK)
MessageBox("设定屏幕显示模式失败!");
memset(&desc,0,sizeof(desc));
desc.dwSize = sizeof(desc);
desc.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
desc.dwBackBufferCount = 1;
desc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;
result = pDD7->CreateSurface(&desc,&pPSur,NULL);
if(result !=DD_OK)
MessageBox("建立主绘图页失败!");
caps.dwCaps = DDSCAPS_BACKBUFFER;
result = pPSur->GetAttachedSurface(&caps,&pBBuf);
if(result !=DD_OK)
MessageBox("连接后缓冲区失败!");
memset(&desc,0,sizeof(desc));
desc.dwSize = sizeof(desc);
desc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN ;
desc.dwWidth = 640;
desc.dwHeight = 480;
result = pDD7->CreateSurface(&desc, &pOPla, NULL);
if(result !=DD_OK)
MessageBox("建立幕后暂存区失败!");
return 0;
}
void canvasFrame::OnPaint()
{
CPaintDC dc(this);
pBBuf->BltFast( 0 , 0 , pOPla, CRect(0,0,640,480) , DDBLTFAST_WAIT );
pPSur->Flip( NULL , DDFLIP_WAIT );
}
void canvasFrame::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CFrameWnd::OnChar(nChar, nRepCnt, nFlags);
if( nChar== VK_ESCAPE )
PostMessage(WM_CLOSE );
}
*****************************************************
--------------------Configuration: canvas - Win32 Debug--------------------
Compiling...
canvasFrame.cpp
C:\My Documents\CH08-1\canvasFrame.cpp(17) : error C2146: syntax error : missing ';' before identifier 'pDD7'
C:\My Documents\CH08-1\canvasFrame.cpp(17) : error C2501: 'LPDIRECTDRAW7' : missing storage-class or type specifiers
C:\My Documents\CH08-1\canvasFrame.cpp(17) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
canvas.exe - 3 error(s), 0 warning(s)
|
|