ivan3510 8 Junior Poster

Hi!

Can somebody help me?
I want to add text, but I can't. I saw some examples, but when I wrote them in my code, it returns error. Here's the code (Win32, directX, c++):

#include <Windows.h>
#include <WindowsX.h>
#include <d3d9.h>
#include "D:\\Program Files\\Microsoft DirectX SDK (June 2010)\\Include\\d3dx9.h"
//I don't know why, but when I put #include <d3dx9.h> it doesn't work

#pragma comment(lib,"d3d9.lib")

LPDIRECT3D9 d3d;
LPDIRECT3DDEVICE9 d3ddev;
void initD3D(HWND hWnd);
void render_frame(void);
void cleanD3D(void);
int screenW,screenH;

//////////////////?????????
///////////////////////////
///////////////////////////
//I tried to add this, but something doesn't work
//Everything works fine, except this
RECT lineRect;
ID3DXFont *pDefaultFont;
D3DCOLOR defaultFontColor;

lineRect.left=0; //Error: this declaration has no storage class or type specifier
////////////////?????????
/////////////////////////
/////////////////////////


LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
	HWND hWnd;
	WNDCLASSEX wc;
	ZeroMemory(&wc,sizeof(WNDCLASSEX));
	wc.cbSize=sizeof(WNDCLASSEX);
	wc.style=CS_HREDRAW|CS_VREDRAW;
	wc.lpfnWndProc=WindowProc;
	wc.hInstance=hInstance;
	wc.hCursor=LoadCursor(NULL,IDC_ARROW);
	wc.hbrBackground=(HBRUSH)COLOR_WINDOW;
	wc.lpszClassName=L"WindowClass";

	RegisterClassEx(&wc);
	screenW=GetSystemMetrics(SM_CXSCREEN);
	screenH=GetSystemMetrics(SM_CYSCREEN);
	hWnd=CreateWindowEx(NULL,
		L"WindowClass",
		L"Out first dirext3D program",
		WS_OVERLAPPEDWINDOW,
		screenW/4,screenH/4,
		screenW/2,screenH/2,
		NULL,NULL,
		hInstance,NULL);
	ShowWindow(hWnd,nCmdShow);
	initD3D(hWnd);
	MSG msg;
	while(TRUE){
		while(PeekMessage(&msg,NULL,0,0,PM_REMOVE)){
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
		if(msg.message==WM_QUIT)
			break;
		render_frame();
	}
	cleanD3D();
	return msg.wParam;
}
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam){
	switch(message){
	case WM_DESTROY:
		{
			PostQuitMessage(0);
			return 0;
					}
		break;
	}
	return DefWindowProc(hWnd,message,wParam,lParam);
}

void initD3D(HWND hWnd){
	d3d=Direct3DCreate9(D3D_SDK_VERSION);
	D3DPRESENT_PARAMETERS d3dpp;
	ZeroMemory(&d3dpp,sizeof(d3dpp));
	d3dpp.Windowed=TRUE;
	d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;
	d3dpp.hDeviceWindow=hWnd;
	
	d3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&d3ddev);
}

void render_frame(void){
	d3ddev->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,40,100),1.0f,0);
	d3ddev->BeginScene();
	d3ddev->EndScene();
	d3ddev->Present(NULL,NULL,NULL,NULL);
}

void cleanD3D(void){
	d3ddev->Release();
	d3d->Release();
}

Thanks a lot!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.