CodeNet - все для программиста!CodeNet - 10 лет - мегавстреча!
Все для программиста!
  Статьи   Форум   Исходники   Каталог   Хостинг   IRC  
 Справочник функций

Ваш аккаунт

Логин:
Пароль:

Забыли пароль?
Регистрация

Почтовая рассылка



Подписчиков: 6553
(Из них RSS: 0)

Последний выпуск: 22.06.2010
Старый 18.07.2009, 00:40   #1
karimchik
Стажер
 
Регистрация: 16.06.2008
Сообщений: 48
Вес репутации: 0
karimchik is an unknown quantity at this point
Question has exited with code 0 (0x0)

Эксперты!У меня к вам вопрос.Возможно эту тему нужно было писать не в этот раздел , а в другой , но так как код предназначен для вывода граффики,я решил писать в этом разделе.
Вот код:
Код:
// 14.cpp : Defines the entry point for the application.
//

#include "stdafx.h"

#include "d3dx9.h"
#include "d3d9.h"
#include <d3dx9math.h>

#define D3DFVF_CUSTOMVERTEX ( D3DFVF_XYZRHW| D3DFVF_DIFFUSE )

IDirect3D9 *D3dObject;
IDirect3DDevice9* D3dDevice; 
	LPDIRECT3DVERTEXBUFFER9 Buff=NULL;

VOID * p;

struct CUSTOMVERTEX 
{
	float X,Y,Z , rwh;
	DWORD color;
};

CUSTOMVERTEX Tre[]=
{
	{20.0f,20.0f,20.5f,0x1AAAAfff},
	{60.0f,20.0f,20.5f,0x1AAAAfff},
	{40.0f,50.5f,20.5f,0x1AAAAfff},
};

LRESULT __stdcall MainWindowProc
	(
		HWND hwnd,
		UINT msg,
		WPARAM wParam,
		LPARAM lParam
	);

void DrawWindowArea(HWND hwnd);

int __stdcall WinMain
	(
		HINSTANCE instance,
		HINSTANCE previousInstance,
		LPSTR commandLine,
		int commandShow
	)
{
	WNDCLASS wc;
	ZeroMemory(&wc, sizeof(wc));

	wc.style = CS_HREDRAW | CS_VREDRAW;
	wc.hInstance = instance;
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.lpszClassName = "mywndclass";
	wc.lpfnWndProc = MainWindowProc;

	if( !RegisterClass(&wc) )
		return 0;	

	HWND AppWnd = CreateWindow
		(
			"mywndclass",
			"d3d test",
			WS_OVERLAPPEDWINDOW,
			100, 100, 450, 400,
			NULL,
			NULL,
			instance,
			NULL
		);

	if( !AppWnd )
		return 0;

	D3dObject = Direct3DCreate9(D3D_SDK_VERSION);
	if( !D3dObject )
		return 0;

	D3DPRESENT_PARAMETERS d3dpp; 
	ZeroMemory( &d3dpp, sizeof(d3dpp) );
	
	d3dpp.Windowed = TRUE;
	d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;

	HRESULT res;
	res = D3dObject -> CreateDevice
					(
						D3DADAPTER_DEFAULT,
						D3DDEVTYPE_HAL,
						AppWnd,
						D3DCREATE_HARDWARE_VERTEXPROCESSING,
						&d3dpp,
						&D3dDevice
					);

	if( res != D3D_OK )
	{
		D3dObject -> Release();
		return 0;
	}

	ShowWindow(AppWnd, commandShow);
	UpdateWindow(AppWnd);

	MSG msg;	

	while( GetMessage(&msg, NULL, 0, 0) > 0 )
	{
		DispatchMessage(&msg);
	}
	Buff->Release();
	D3dDevice -> Release();
	D3dObject -> Release();

	return msg.wParam;
}

LRESULT __stdcall MainWindowProc
	(
		HWND hwnd,
		UINT msg,
		WPARAM wParam,
		LPARAM lParam
	)
{

	switch(msg)
	{
		case WM_PAINT:

			DrawWindowArea(hwnd);			
			return 0;

		case WM_DESTROY:

			PostQuitMessage(0);
			return 0;				
	}

	return DefWindowProc(hwnd, msg, wParam, lParam);
}	

void DrawWindowArea(HWND hwnd)
{

	D3dDevice ->CreateVertexBuffer(sizeof(CUSTOMVERTEX)*3,0,D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT,&Buff,NULL);

	void *p;
	Buff -> Lock(0, 0, &p, 0);
	CopyMemory(p, Tre, sizeof(Tre));
	Buff -> Unlock();

	D3dDevice -> Clear
				(
					0, 
					NULL, 
					D3DCLEAR_TARGET, 
					D3DCOLOR_XRGB(255, 255, 255), 
					0,
					0
				);

	D3dDevice ->BeginScene();
	D3dDevice ->SetStreamSource(0,Buff,0,sizeof(CUSTOMVERTEX));
	D3dDevice ->SetFVF(D3DFVF_CUSTOMVERTEX);
	D3dDevice ->DrawPrimitive(D3DPT_TRIANGLELIST,0,1);
	D3dDevice ->EndScene();
	D3dDevice -> Present(NULL, NULL, NULL, NULL);

	RECT wndRect;
	GetClientRect(hwnd, &wndRect);
	ValidateRect(hwnd, &wndRect);
}
Всё работает!Но меня смущяет ,что в Debug окне выходит следующее:
Код:
The program 'C:\Program Files\Microsoft Visual Studio\MyProjects\Вершины v 2(4)\Debug\Окно.exe' has exited with code 0 (0x0).
Что это?
karimchik вне форума  
Реклама
Старый 18.07.2009, 08:07   #2
wanja
Эксперт
 
Регистрация: 03.02.2003
Сообщений: 804
Вес репутации: 24
wanja will become famous soon enough
По умолчанию

Как правило, это значит, что программа корректно завешилась.
__________________
Семь бед - один reset...
wanja вне форума  
Старый 18.07.2009, 16:15   #3
karimchik
Стажер
 
Регистрация: 16.06.2008
Сообщений: 48
Вес репутации: 0
karimchik is an unknown quantity at this point
Thumbs up

Ясно)А то я думал это какой-то недачёт.
karimchik вне форума  
Старый 19.07.2009, 19:09   #4
Lerkin
Ветеран
 
Аватар для Lerkin
 
Регистрация: 25.03.2003
Адрес: Внутренняя Монголия
Сообщений: 1,415
Вес репутации: 41
Lerkin has much to be proud ofLerkin has much to be proud ofLerkin has much to be proud ofLerkin has much to be proud ofLerkin has much to be proud ofLerkin has much to be proud ofLerkin has much to be proud ofLerkin has much to be proud ofLerkin has much to be proud of
По умолчанию

Преступное незнание основ всего.
Постановляю: ЗАКРЫТЬ.
Lerkin вне форума  
Закрытая тема

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Code for ARM Zhilin Mike Низкоуровневое программирование 4 18.03.2007 21:36
Exited with status: 77 leich Программирование под Linux/Unix 1 02.10.2006 15:57
Code::blocks Rusn Borland C++ Builder 1 09.08.2006 17:35
Delphi code->C++ code honeybeer Borland C++ Builder 10 02.08.2005 14:24
[CODE]parser[/CODE] средствами PHP #define Web программирование 1 19.09.2003 11:05


Часовой пояс GMT +4, время: 11:59.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd. Перевод: zCarot
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог