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

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

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2011, 21:55   #1
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию минимальная программа на с++

Наверное подходящий раздел для этого? Программа - простое окно, но реализовал через несколько заголовочных файлов и исполнительных:
.h: Variables.h (здесь я разместил только глобальные переменные), DirectXMyLib.h (здесь описал функции для создания окна, обработки сообщений);
.cpp: DirectXMyLib.cpp (здесь функции определены из такого же заголовочного файла), MainThread.cpp (здесь я их вызываю);
Насколько это правильно? (Но скажу сразу, что получилось очень удобно для меня, как разработчика). Но я уверен, что написал немного лишнего в коды файлов (в частности с HINSTANCE и объявлением главной функции ещё не до конца разобрался, как её можно объявлять, а как нет), скажите пожалуйста, что здесь лишнего?
Код:
//Variables.h
#include <WinDef.h>
HWND _hwnd;
int _width = 800;
int _height = 600;
Код:
//DirectXMyLib.h
#include <string>
#include <d3dx9.h>
#include <d3d9.h>

namespace dxml
{
	LRESULT CALLBACK wnd_proc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);

	bool wnd_create (HINSTANCE hinstance, HWND hwnd, int width, int height);

	void wnd_messages (HINSTANCE hinstance, HWND hwnd);

}
Код:
////DirectXMyLib.cpp
#include "DirectXMyLib.h"

	bool dxml::wnd_create (HINSTANCE hinstance, HWND hwnd, int width, int height)
	{
		WNDCLASS wc;

		wc.style = CS_HREDRAW | CS_VREDRAW;
		wc.lpfnWndProc = (WNDPROC)dxml::wnd_proc;
		wc.cbClsExtra = 0;
		wc.cbWndExtra = 0;
		wc.hbrBackground = HBRUSH(GetStockObject(WHITE_BRUSH));
		wc.hCursor = LoadCursor(0, IDC_ARROW);
		wc.hIcon = LoadIcon(0, IDI_APPLICATION);
		wc.hInstance = hinstance;
		wc.lpszClassName = "TDirectX1";
		wc.lpszMenuName = NULL;
		
		if (!RegisterClass(&wc))
			return false;

		hwnd = 0;
		hwnd = CreateWindow(wc.lpszClassName, 
							"DirectX", 
							WS_OVERLAPPEDWINDOW, 
							0, 0, width, height, 
							0, 0, hinstance, 0);
		if (!hwnd)
			return false;

		ShowWindow(hwnd, SW_SHOW);
		UpdateWindow(hwnd);
		return true;
	}

	void dxml::wnd_messages (HINSTANCE hinstance, HWND hwnd)
	{
		MSG msg;
		while (1)
		{
			if (PeekMessageA(&msg, hwnd, 0, 0, PM_REMOVE))
			{
				if (msg.message == WM_QUIT)
					break;
				TranslateMessage(&msg);
				DispatchMessage(&msg);
			}
		}
	}
Код:
//MainThread.cpp
#include "DirectXMyLib.h"
#include "Variables.h"

//using namespace dxml;

LRESULT CALLBACK dxml::wnd_proc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
	switch (msg)
	{
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		case WM_KEYDOWN:
			if (wparam == VK_ESCAPE)
				DestroyWindow(hwnd);
			break;
	}
	return DefWindowProc(hwnd, msg, wparam, lparam); 
}

int WINAPI WinMain(HINSTANCE hinstance,
				   HINSTANCE prevInstance, 
				   PSTR cmdLine,
				   int showCmd)
{
	if (dxml::wnd_create(hinstance, _hwnd, _width, _height))
		MessageBeep(MB_OK);
	dxml::wnd_messages(hinstance, _hwnd);
}
P.S. Ребят, наверное всё-таки ошибся разделом я... Прошу модераторов переместить в подходящее место пожалуйста.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 24.02.2011 в 21:59.
ImmortalAlexSan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача. Минимальная сумма olimpiadnik Помощь студентам 3 15.01.2011 10:19
Минимальная сумма BigBen Помощь студентам 3 12.01.2011 17:03
Минимальная нагрузка от виртуальной машины bookkc Помощь студентам 2 24.08.2010 18:16
Минимальная длинна слова в строке Anarki Общие вопросы C/C++ 7 24.09.2009 20:39
Минимальная заработная плата Cantana Свободное общение 15 24.12.2007 18:28