游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1637|回复: 3

没错误,但窗口出不来,请帮忙看看

[复制链接]

15

主题

49

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2007-2-1 14:10:00 | 显示全部楼层 |阅读模式
#include <windows.h>
#include <d3d9.h>

LPDIRECT3D9 g_pD3D=NULL;
LPDIRECT3DDEVICE9 g_pd3dDevice=NULL;

LRESULT CALLBACK MsgProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
        PAINTSTRUCT ps;
        HDC hdc;
        switch(message)
        {
        case WM_PAINT:
                hdc=BeginPaint(hWnd,&ps);
                EndPaint(hWnd,&ps);
               
                break;
        case WM_DESTROY:
                PostQuitMessage(0);
                break;
        }
        return DefWindowProc(hWnd,message,wParam,lParam);
}

VOID Render()
{
        if(NULL==g_pd3dDevice)
                return;
        g_pd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,255),1.0f,0);
        if(SUCCEEDED(g_pd3dDevice->BeginScene()))
        {
                g_pd3dDevice->EndScene();
        }
        g_pd3dDevice-&gtresent(NULL,NULL,NULL,NULL);
}

int WinMain(HINSTANCE hInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpCmdLine,
                        int nCmdShow)
{
        WNDCLASSEX wc;
        wc.cbClsExtra=0;
        wc.cbSize=sizeof(WNDCLASSEX);
        wc.cbWndExtra=0;
        wc.hbrBackground=NULL;
        wc.hCursor=NULL;
        wc.hIcon=NULL;
        wc.hIconSm=NULL;
        wc.hInstance=hInstance;
        wc.lpfnWndProc=MsgProc;
        wc.lpszClassName="D3D Tutorial";
        wc.lpszMenuName=NULL;
        wc.style=0;
        RegisterClassEx(&wc);

        HWND hWnd=CreateWindowEx(0,"D3D Tutorial",NULL,WS_OVERLAPPEDWINDOW,100,100,
                300,300,
                   GetDesktopWindow(),NULL,wc.hInstance,NULL);

        if(NULL==(g_pD3D=Direct3DCreate9(D3D_SDK_VERSION)))
                return E_FAIL;

        D3DPRESENT_PARAMETERS d3dpp;
        d3dpp.Windowed=TRUE;
        d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;
        d3dpp.BackBufferFormat=D3DFMT_UNKNOWN;

        if(FAILED(g_pD3D->CreateDevice(
                D3DADAPTER_DEFAULT,
                 D3DDEVTYPE_HAL,
                 hWnd,
                 D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                 &d3dpp,
                 &g_pd3dDevice)))
                 return E_FAIL;

        ShowWindow(hWnd,SW_SHOWDEFAULT);
        UpdateWindow(hWnd);

        MSG msg;
        while(msg.message!=WM_QUIT)
        {
                if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
                {
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                }
                else Render();
        }

        if(g_pd3dDevice!=NULL)
                g_pd3dDevice->Release();
        if(g_pD3D!=NULL)
                g_pD3D->Release();
       
        return msg.wParam;
}

VC6.0 编译链接都没错误,就是窗口出不来,请问怎么回事。
另外,有时进程里有,有时没有。。。
初学,请赐教

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2007-2-1 14:30:00 | 显示全部楼层

Re:没错误,但窗口出不来,请帮忙看看

D3DPRESENT_PARAMETERS d3dpp;和MSG msg;没有初始化.
应该在下面加上:
ZeroMemory(&d3dpp,sizeof(d3dpp));
ZeroMemory(&msg,sizeof(msg));

15

主题

49

帖子

55

积分

注册会员

Rank: 2

积分
55
 楼主| 发表于 2007-2-1 15:34:00 | 显示全部楼层

Re:没错误,但窗口出不来,请帮忙看看

嘿嘿。真是太谢谢了~~~

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2007-2-1 15:50:00 | 显示全部楼层

Re:没错误,但窗口出不来,请帮忙看看

不客气,穷帮穷,也许以后还有问题要问到你.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 09:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表