Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2010, 14:42   #1
LovePower
Новичок
Джуниор
 
Регистрация: 07.03.2010
Сообщений: 1
По умолчанию создание окна средствами API!!

Здравствуйте, уважаемые программисты)). Я в программировании на с++ сравнительно недавно.. Ну основы программирования уже знаю на мой взгляд хорошо)). Код бью на зарошем паутиной продукте Microsoft Visual C++ 6.0.. Вот начал изучать DirectX SDK, в своем первом приложении Windows 32 Applications хочу инициализировать DirectX в окне, это даст представление о том, как можно сделать обычную программу внедрив в нее средства DirectX, мне кажется ее можно будет сделать намного красивее и динамичнее, минус только один у конечного пользователя должен быть установленный DirectX 9.0, но думаю в наше время уже все распологают этим программным продуктом.
И так собственно к делу, создаю я окно, а оно тупо не появляется, вроде все правильно забил, и функции ShowWindow, UpdateWindow вбил, а оно все равно не появляется, и самое главное, компилятор даже не ругается ни на что((. говорит 0 ошибок, 0 предостережений. Нувот собственно мой горе код))), на инициализацию DirectX можно забить, главное помогите пожалуйста с выведение окна на экран, спасибо большое заренее).
Код:
#include "windows.h"
#include "d3d9.h"
LPARAM _stdcall MyWindProc (HWND,UINT,WPARAM,LPARAM);
int _stdcall WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
	WNDCLASS MyWindow;
	MyWindow.cbClsExtra = 0;
	MyWindow.cbWndExtra = 0;
	MyWindow.hbrBackground = (HBRUSH) (6);
	MyWindow.hCursor = LoadCursor (NULL,IDC_ARROW);
	MyWindow.hIcon = LoadIcon (NULL,IDI_APPLICATION);
	MyWindow.hInstance = hInstance;
	MyWindow.lpfnWndProc = MyWindProc;
	MyWindow.lpszClassName = TEXT("class");
	MyWindow.lpszMenuName = NULL;
	MyWindow.style = CS_OWNDC;
	RegisterClass (&MyWindow);
	HWND hWnd = CreateWindow (TEXT("class"),TEXT("Moe okno!!"),WS_OVERLAPPEDWINDOW,
		200,100,500,500,NULL,NULL,hInstance,NULL);
	ShowWindow (hWnd,nShowCmd);
	UpdateWindow(hWnd);
	IDirect3D9 *d3d=NULL;
	IDirect3DDevice9 *dev=NULL;
	d3d = Direct3DCreate9(D3D_SDK_VERSION);
	D3DPRESENT_PARAMETERS pp;
	ZeroMemory(&pp,sizeof(pp));
	pp.BackBufferWidth = 500;
	pp.BackBufferHeight = 500;
	pp.BackBufferFormat = D3DFMT_X8R8G8B8;
	pp.BackBufferCount = 1;
	pp.SwapEffect = D3DSWAPEFFECT_DISCARD;
	pp.hDeviceWindow = hWnd;
	pp.Windowed = true;
	d3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_REF,hWnd,
		D3DCREATE_SOFTWARE_VERTEXPROCESSING, &pp, &dev);
	MSG msg;
	while (1)
	{
		if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)){
			if (msg.message == WM_QUIT)
				break;
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
		dev->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(255,255,255),
			1.0f,0);
		dev->BeginScene();
		dev->EndScene();
		dev->Present(NULL,NULL,NULL,NULL);
	}
	if (d3d != NULL)
		d3d->Release();
	if (dev != NULL)
		dev->Release();
	return 0;

}

LPARAM _stdcall MyWindProc (HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
	switch (msg)
	{
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return MyWindProc (hWnd,msg,wParam,lParam);
}
LovePower вне форума Ответить с цитированием
Старый 07.03.2010, 21:20   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Код:
#include <windows.h>
#include <math.h>

const
	char WINTITLE[] = "WindowAPI";
	char WINCAPTION[] = "Window";

HWND hmain;
WNDCLASSEX WinClass;

LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_DESTROY: 
			PostQuitMessage(0);
			break;
		default: 
			return DefWindowProc(hWnd, message, wParam, lParam);
			break;
	}
}

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	MSG msg;
	WinClass.cbSize = sizeof(WNDCLASSEX);
	WinClass.lpszClassName = WINTITLE;
	WinClass.style = CS_VREDRAW | CS_HREDRAW;
	WinClass.hInstance = hInstance;
	WinClass.lpfnWndProc = (WNDPROC)WindowProcedure;
	WinClass.cbClsExtra = 0;
	WinClass.cbWndExtra = 0;
	WinClass.hIcon = LoadIcon(0, IDI_APPLICATION);
	WinClass.hCursor = LoadCursor(0, IDC_CROSS);
	WinClass.hbrBackground = (HBRUSH)COLOR_BTNFACE + 1;
	if (!RegisterClassEx(&WinClass)) 
	{
		MessageBox(GetForegroundWindow(), "Can't register class window", "Error", IDI_WARNING || MB_OK);
		return 1;
	}
	else
	{
		hmain = CreateWindowEx(WS_EX_APPWINDOW, WINTITLE, WINCAPTION, WS_OVERLAPPEDWINDOW, 300, 200, 640, 480, 0, 0, hInstance, 0);
	}
	if (!hmain)
	{
		MessageBox(0, "Can't create window", "Error", IDI_WARNING || MB_OK);
		return 1;
	}
	else
	{
		ShowWindow(hmain, SW_NORMAL);
	}
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
}

написано это дело на с++ 6,0 профешнл, 100% рабочий код
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 07.03.2010, 21:29   #3
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

[удалил сам]

Последний раз редактировалось profi; 07.03.2010 в 22:05.
profi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание модели хищник-жертва средствами Excel. Pavel_Ine Microsoft Office Excel 5 05.05.2014 18:26
API определение дочернего окна senia Win Api 6 25.12.2009 01:23
Создание Shareware приложений средствами Delphi. Как? Ly_Zer Помощь студентам 0 04.12.2009 14:12
Создание защиты средствами DELPHI JustKurt Общие вопросы Delphi 10 30.07.2009 09:50
Создание папки средствами ASP dubin PHP 0 05.04.2009 20:03