这个类主要用于绘图,帖图等操作.有些函数只是简单的包装了一下DX的API...也不知道这样好还是不好
昨天发烧,头晕又头痛,感觉就像。。
还没完成的,以后逐渐修改。
类Graph.cpp文件如下:
#include "StdAfx.h"
#include "./graph.h"
#include "./global.h"
CGraph::CGraph(void)
: m_WinHeight(0)
{
}
CGraph::~CGraph(void)
{
}
// 初始化DirectDraw
bool CGraph::InitDDraw(void)
{
if(DirectDrawCreate(NULL, &lpDD, NULL) != DD_OK )
{
return false;
}
return true;
}
// 释放DirectDraw对象
void CGraph::FreeDDraw(void)
{
MessageBox(hWnd,"Releasing...","Release",MB_OK);
if (lpDD != NULL)
{
//_RELEASE( lpDDSBack );
//_RELEASE( lpDDSPrimary );
_RELEASE( lpDD );
}
}
// 设置窗口模式
bool CGraph::SetWindowMode(bool bFullScreen)
{
DWORD dwFlags;
if (bFullScreen)
{
dwFlags = DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT;
this->bIsWindowMode = false;
}else{
dwFlags = DDSCL_NORMAL;
this->bIsWindowMode = true;
}
if (lpDD->SetCooperativeLevel(hWnd,dwFlags) == DD_OK)
return true;
return false;
}
// 设置游戏窗口大小及色深
bool CGraph::SetWindowSize(int nWidth, int nHeight, int nColorDepth)
{
m_WinHeight = nHeight;
m_WinWidth = nWidth;
m_ColorDepth = nColorDepth;
if(this->bIsWindowMode)
return true;
if(lpDD->SetDisplayMode(nWidth,nHeight,nColorDepth) != DD_OK)
return false;
return true;
}
// 设置窗口风格与当前显示模式匹配
bool CGraph::SetWindowStyle(void)
{
if(this->bIsWindowMode)
{
SetWindowLong(hWnd,GWL_EXSTYLE, WS_EX_OVERLAPPEDWINDOW);
SetWindowLong(hWnd,GWL_STYLE, WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX);
SetWindowPos(hWnd,HWND_NOTOPMOST, 0,0,m_WinWidth,m_WinHeight,SWP_SHOWWINDOW | SWP_NOMOVE );
}else{
SetWindowLong(hWnd,GWL_EXSTYLE,WS_EX_TOPMOST);
SetWindowLong(hWnd,GWL_STYLE, WS_POPUP);
SetWindowPos(hWnd,HWND_TOPMOST,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),SWP_SHOWWINDOW);
}
return true;
}