|
我知道,建立普通的窗口,就是该一个参数的设置,但是我改了以后,一编译,就提示建立主绘图页失败,请问怎摸回事?
IMPLEMENT_DYNCREATE(canvasFrame, CFrameWnd)
LPDIRECTDRAW7 pDD7; //定义DirectDraw对象
LPDIRECTDRAWSURFACE7 pPSur; //定义主绘图页
LPDIRECTDRAWSURFACE7 pBBuf; //定义后缓冲区
LPDIRECTDRAWSURFACE7 pOPla[2]; //定义幕后暂存区
DDSCAPS2 caps; //定义DDSCAPS结构
DDSURFACEDESC2 desc; //定义描述结构
HRESULT result; //定义HRESULT类型变量
DDCOLORKEY key; //定义颜色键
int i;
canvasFrame::canvasFrame()//构造函数
{
RECT rect;
Create(NULL,"绘图窗口");
CClientDC dc(this);
int width = dc.GetDeviceCaps(HORZRES);
int height = dc.GetDeviceCaps(VERTRES);
GetWindowRect( &rect );
width = ( width - ( rect.right - rect.left ))/2 ;
height = (height - (rect.bottom - rect.top ))/2 ;
MoveWindow( width , height , (rect.right - rect.left ) , (rect.bottom - rect.top ) ,true);
result = DirectDrawCreateEx(NULL, (VOID**)&pDD7, IID_IDirectDraw7, NULL);
//建立DirectDraw对象
if (result != DD_OK)
{
MessageBox("建立DirectDraw对象失败!");
// return 0;
}
result = pDD7->SetCooperativeLevel(m_hWnd,DDSCL_NORMAL);
//设定协调等级
if(result !=DD_OK)
MessageBox("设定程序协调等级失败!");
result = pDD7->SetDisplayMode(640,480,16,0,DDSDM_STANDARDVGAMODE); //设定显示模式
if(result !=DD_OK)
{
MessageBox("设定屏幕显示模式失败!");
// return 0;
}
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("建立主绘图页失败!");
// return 0;
}
caps.dwCaps = DDSCAPS_BACKBUFFER;
result = pPSur->GetAttachedSurface(&caps,&pBBuf);
//连结后缓冲区
if(result !=DD_OK)
{
MessageBox("连接后缓冲区失败!");
//return 0;
}
memset(&desc,0,sizeof(desc));
desc.dwSize = sizeof(desc);
desc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN ;
desc.dwWidth =768;
desc.dwHeight = 540;
//建立幕后暂存区
result = pDD7->CreateSurface(&desc, &pOPla[0], NULL);
if(result !=DD_OK)
{
MessageBox("建立幕后暂存区失败!");
//return;
}
}
以上就是主要代码,请高手指教呀
|
|