我说的是那个,在河边有只鸟飞的。还有个东西升上来,然后爆炸的那个
[email protected]
再次表示感谢了。

解决方案 »

  1.   

    //*******************************************************************
    // 工程:DirectX
    // 文件:main.cpp
    // 内容:创建一个DirectDraw应用程序,显示文字
    //*******************************************************************
    #include <windows.h>
    #include <windowsx.h>
    #include <ddraw.h>LPDIRECTDRAW lpDD; // DirectDraw对象
    LPDIRECTDRAWSURFACE lpDDSPrimary; // DirectDraw主页面
    char szMsg1[] = "Hello World, I am DirectDraw boy !";
    char szMsg2[] = "按 ESC 退出";
    //函数声明
    LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );
    BOOL InitWindow( HINSTANCE hInstance, int nCmdShow );
    BOOL InitDDraw( void );
    void FreeDDraw( void );
    //*******************************************************************
    //函数:WinMain()
    //功能:Win32应用程序入口函数。进行初始化工作,处理消息循环
    //*******************************************************************
    int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                          LPSTR lpCmdLine, int nCmdShow)
    {
        MSG msg;    //初始化主窗口
        if ( !InitWindow( hInstance, nCmdShow ) )
            return FALSE;    //初始化DirectDraw环境,并实现DirectDraw功能
        if ( !InitDDraw())
        {
            MessageBox(GetActiveWindow(), "初始化DirectDraw过程中出错!", "Error", MB_OK );
            FreeDDraw();
            DestroyWindow(GetActiveWindow());
            return FALSE;
        }
        
        //进入消息循环
        while (GetMessage(&msg, NULL, 0, 0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        
        return msg.wParam;
    }//******************************************************************
    //函数:InitWindow()
    //功能:创建主窗口。
    //******************************************************************
    static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow )
    {
        HWND hwnd; //窗口句柄
        WNDCLASS wc; //窗口类结构
        
        //填充窗口类结构
        wc.style = 0;
        wc.lpfnWndProc = WinProc;
        wc.cbClsExtra = 0;
        wc.cbWndExtra = 0;
        wc.hInstance = hInstance;
        wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION );
        wc.hCursor = LoadCursor( NULL, IDC_ARROW );
        wc.hbrBackground = GetStockObject(BLACK_BRUSH);
        wc.lpszMenuName = NULL;
        wc.lpszClassName = "dxHello";    //注册窗口类
        RegisterClass( &wc );
        
        //创建主窗口
        hwnd = CreateWindowEx(
        0,
        "dxHello",
        "",
        WS_POPUP,
        0, 0,
        GetSystemMetrics( SM_CXSCREEN ),
        GetSystemMetrics( SM_CYSCREEN ),
        NULL,
        NULL,
        hInstance,
        NULL );
        
        if( !hwnd ) return FALSE;
        //显示并更新窗口
        ShowWindow( hwnd, nCmdShow );
        UpdateWindow( hwnd );
        return TRUE;
        }
        
    //******************************************************************
    //函数:WinProc()
    //功能:处理主窗口消息
    //******************************************************************
    LRESULT CALLBACK WinProc( HWND hWnd, UINT message, 
                                 WPARAM wParam, LPARAM lParam )
    {
        switch( message )
        {
            case WM_KEYDOWN://击键消息
                switch( wParam )
                {
                    case VK_ESCAPE:
                        PostMessage(hWnd, WM_CLOSE, 0, 0);
                        break;
                }
                break;
            case WM_DESTROY://退出消息
                FreeDDraw();
                PostQuitMessage( 0 );
                break;
        }    //调用缺省消息处理过程
        return DefWindowProc(hWnd, message, wParam, lParam);
    }//******************************************************************
    //函数:InitDDraw()
    //功能:初始化DirectDraw环境并实现其功能。包括:创建DirectDraw对象,
    // 设置显示模式,创建主页面,输出文字。
    //******************************************************************
    BOOL InitDDraw(void)
    {
        DDSURFACEDESC ddsd; //页面描述
        HDC hdc; //设备环境句柄    //创建DirectCraw对象
        if ( DirectDrawCreate( NULL, &lpDD, NULL ) != DD_OK ) return FALSE;    // 取得独占和全屏模式
        if ( lpDD->SetCooperativeLevel( GetActiveWindow(),
                        DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN ) != DD_OK)
            return FALSE;
        
        //设置显示模式
        if ( lpDD->SetDisplayMode( 640, 480, 8 ) != DD_OK) return FALSE;
        
        //填充主页面信息
        ddsd.dwSize = sizeof( ddsd );
        ddsd.dwFlags = DDSD_CAPS;
        ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
        
        //创建主页面对象
        if ( lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL ) != DD_OK)
            return FALSE;
        
        //输出文字
        if ( lpDDSPrimary->GetDC(&hdc) != DD_OK) return FALSE; 
            
        SetBkColor( hdc, RGB( 0, 0, 255 ) );
        SetTextColor( hdc, RGB( 255, 255, 0 ) );
        TextOut( hdc, 220, 200, szMsg1, lstrlen(szMsg1));
        TextOut( hdc, 280, 240, szMsg2, lstrlen(szMsg2));
        lpDDSPrimary->ReleaseDC(hdc);
        return TRUE;
    } //******************************************************************
    //函数:FreeDDraw()
    //功能:释放所有的DirectDraw对象。
    //******************************************************************
    void FreeDDraw( void )
    {
        if( lpDD != NULL )
        {
            if( lpDDSPrimary != NULL )
            {
                lpDDSPrimary->Release();
                lpDDSPrimary = NULL;
            }
            lpDD->Release();
            lpDD = NULL;
        }
    }
      

  2.   

    楼上的大哥,谢谢你。。不过这个不是我想要的吧。这个程序就是输出几个文字。我要鸟飞的目的就是想要个换页的呀。flip的。。还是谢谢你。一定给你分
      

  3.   

    换页的也很简单啊!我想你一定安装了DirectX SDK了,你看看里面的例子不就行了?写的很经典!!!
      

  4.   

    建议下载DX8 SDK 例子很多。
    http://hnhttp.skycn.net/down/DX81SDK_FULL.exe(169705 KB)
      

  5.   

    to ttzzgg_80713(别欺侮我):我很久以前装过DirectX SDK,现在只保留了两个例子,你先看看吧。我觉得你还是去买一张D版碟吧,这样最方便。