首页/技术开发/内容

通向DirectDraw之捷径

技术开发2024-06-12 阅读()
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(北联网教程,专业提供视频软件下载)

第1页  第2页  第3页  第4页  第5页 

……

相关阅读