MB_ICONERROR);
return false;
}
return true;
}
该死的 InitDD() 函数... 不过别急,它只不过几行而已! 这儿就是通常那些个库文件的用武之地。现在那些妨碍我们建立 DirectDraw 对象的冗长的玩意儿已被我们轻松搞定了,而你将会再次注意到它挺麻烦的,不是吗?如果你真的不想弄明白那些惹人烦的玩意儿,那么至少你得知道个梗概吧!如果你得回去改变协作等级什么的,它也许帮得上忙。注意到这是一个返回 bool 值的函数, 因此如果你不厌倦的话, 你应当做一下错误检查。(基于你所可以理解的篇幅问题之原因,我决定在这篇文章中省略)
void CleanUp()
{
SAFE_DELETE(g_pDisplay);
}
真是够简单的! 这个函数调用了在 dxutil.h 中定义的宏 SAFE_DELETE 来删除我们的显示对象,同时调用析构函数。
void MainLoop()
{
g_pDisplay->CreateSurfaceFromText(&g_pText,NULL,"DDraw using Common Files",
RGB(0,0,0),RGB(0,255,0));
g_pDisplay->Clear(0);
g_pDisplay->Blt(0,0,g_pText,0);
g_pDisplay->Present();
g_pText->Destroy();
}
这儿就是你将来放游戏的地方。 为了要给你一个表面对象(surface object)如何工作的例子,我们已经做了一个简单的文本表面而且写了一些文本上去。注意我们在最後释放(destroy)了全局指针变量 g_pText,否则每次循环它都将被重新创建一次,直到吃光最后一点儿内存。
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int iShowCmd)
{
WNDCLASSEX wc;
HWND hWnd;
MSG lpMsg;
wc.cbClsExtra=0;
wc.cbSize=sizeof(WNDCLASSEX);
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hIconSm=LoadIcon(NULL,IDI_APPLICATION);
wc.hInstance=hInstance;
wc.lpfnWndProc=WndProc;
wc.lpszClassName="wc";
wc.lpszMenuName=0;
wc.style=CS_HREDRAW(北联网教程,专业提供视频软件下载)
……