关于CEGUI,编写第一个窗口的时候出错了!该如何处理

关于CEGUI,编写第一个窗口的时候出错了!
#include <d3d9.h>

#include "CEGUI.h"
#include "RendererModules\\Direct3D9\\CEGUIDirect3D9Renderer.h"
#include "CEGUIDefaultResourceProvider.h"


#pragma comment(lib,"CEGUIBase_d.lib")
#pragma comment(lib,"CEGUIDirect3D9Renderer_d.lib")

using namespace CEGUI;


LPDIRECT3D9 g_pD3d = NULL;
LPDIRECT3DDEVICE9 g_pD3dDevice = NULL;
LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL;

struct CUSTOMVERTEX
{
float x,y,z,rhw;
DWORD color;
};

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)

HRESULT InitD3d(HWND hWnd)
{
if (NULL == (g_pD3d = Direct3DCreate9(D3D_SDK_VERSION)))
{
return E_FAIL;
  
}


D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp,sizeof(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;
}

return S_OK;
}



void Cleanup()
{
if (g_pD3dDevice != NULL)
{
g_pD3dDevice->Release();
}

if (g_pD3d != NULL)
{
g_pD3d->Release();
}
}

void Render()
{
if (NULL == g_pD3dDevice)
{
return;
}

if (SUCCEEDED(g_pD3dDevice->BeginScene()))
{
g_pD3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,255),1.0f,0);

CEGUI::System::getSingleton().renderGUI();
g_pD3dDevice->EndScene();
}

g_pD3dDevice->Present(NULL,NULL,NULL,NULL);
}





LRESULT WINAPI MsgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
  Cleanup();
  PostQuitMessage(0);
  return 0;
}
return DefWindowProc(hWnd,msg,wParam,lParam);
}


INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,INT)
{
WNDCLASSEX wc ={sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,
  GetModuleHandle(NULL),NULL,NULL,NULL,NULL,
L"DirectX",NULL};

RegisterClassEx(&wc);
HWND hWnd = CreateWindow(L"DirectX",L"DirectX test",WS_OVERLAPPEDWINDOW,
  0,0,800,600,GetDesktopWindow(),NULL,wc.hInstance,NULL);


if (SUCCEEDED(InitD3d(hWnd)))
{
  
  ShowWindow(hWnd,SW_SHOWDEFAULT);
  UpdateWindow(hWnd);

  MSG msg;
  ZeroMemory(&msg,sizeof(msg));


   
CEGUI::Direct3D9Renderer& myRenderer = CEGUI::Direct3D9Renderer::create(g_pD3dDevice);  

  CEGUI::System::create( myRenderer );

// initialise the required dirs for the DefaultResourceProvider
CEGUI::DefaultResourceProvider* rp = static_cast<CEGUI::DefaultResourceProvider*>
(CEGUI::System::getSingleton().getResourceProvider());

rp->setResourceGroupDirectory("schemes", "../datafiles/schemes/");
rp->setResourceGroupDirectory("imagesets", "../datafiles/imagesets/");
rp->setResourceGroupDirectory("fonts", "../datafiles/fonts/");
rp->setResourceGroupDirectory("layouts", "../datafiles/layouts/");
rp->setResourceGroupDirectory("looknfeels", "../datafiles/looknfeel/");
rp->setResourceGroupDirectory("lua_scripts", "../datafiles/lua_scripts/");

// This is only really needed if you are using Xerces and need to
// specify the schemas location
rp->setResourceGroupDirectory("schemas", "../datafiles/xml_schemas/");