今日の呟き

ぼちぼち

アバター
V30
記事: 21
登録日時: 9年前
住所: 岡山県

ぼちぼち

投稿記事 by V30 » 8年前

全然進まない。

描画の関数を丁寧に制作していたら、引数の種類について何が必要か必要でないのか、
別に関数を作った方が良いのか、少し混乱気味になってきた。

ヘッダファイル

CODE:

#pragma once

#ifndef UNICODE
#define UNICODE
#endif
#define DXT_OPTIONS	//オプション利用

#include 

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   Inline Functions
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

//クラスオブジェクト安全開放
template 
inline void	SafeReleaseClassObject(TypeName *&object)
{
	if (object != NULL)
	{
		delete object;
		object = NULL;
	}
}

//Unknown継承クラスオブジェクト安全開放
template 
inline void	SafeReleaseUnknownClassObject(TypeName *&object)
{
	if (object != NULL)
	{
		object->Release();
		object = NULL;
	}
}

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   Time
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

//日付時刻構造体
struct DateTime
{
	int year;	//年
	int month;	//月
	int day;	//日
	int hour;	//時
	int minute;	//分
	int second;	//秒
};

#include 

//日付時刻取得
void	GetDateTime(DateTime *datetime);

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   Message
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

#define DXT_MESSAGE_FILE_OUTPUT	TRUE		//既定メッセージログ書き込みフラグ

#include 
using namespace std;

extern	BOOL	B_meesage_file_output;		//メッセージログ書き込みフラグ
extern	WCHAR	s_meesage_file_path[256];	//メッセージログデータファイルパス

//メッセージログファイル作成
BOOL	CreateMessageFile();

//メッセージログ書き込みフラグ参照
BOOL	GetMessageFileOutputFlag();

//メッセージ表示
BOOL	MessageW(LPCWSTR message, int code);

//メッセージログ書き込みフラグ設定
void	SetMessageFileOutputFlag(BOOL flag);

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   Window
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

#define DXT_CLIENT_CLEAR_ALPHA	   0.5F			//既定クライアント領域消去カラー不透明度
#define DXT_CLIENT_CLEAR_COLOR	0x0000ffU		//既定クライアント領域消去カラー
#define DXT_CLIENT_HEIGHT		 720L			//既定クライアント領域高さ
#define DXT_CLIENT_WIDTH		1280L			//既定クライアント領域幅
#define DXT_FPS					  60			//既定CRTリフレッシュレート
#define DXT_WINDOW_LEFT			CW_USEDEFAULT	//既定ウインドウ描画座標[x]
#define DXT_WINDOW_TOP			CW_USEDEFAULT	//既定ウインドウ描画座標[y]

//デバッグ時のみ実行
#ifdef	_DEBUG
#define DXT_WINDOW_CAPTION		L"DXT[Debug]"	//ウインドウキャプション
#else

//リリース時のみ実行
#define DXT_WINDOW_CAPTION		L"DXT[Release]"	//ウインドウキャプション
#endif

/*クライアント領域*/
extern	FLOAT		f_client_clear_alpha;			//クライアント領域消去カラー不透明度
extern	UINT32		U_client_clear_color;			//クライアント領域消去カラー
extern	POINT		t_client_gap;					//クライアント領域ウインドウ領域表示座標相対値
extern	RECT		t_client_margin;				//クライアント領域ウインドウ領域内部座標相対値
extern	SIZE		t_client_size;					//クライアント領域サイズ

/*ウインドウ*/
extern	HBRUSH		p_window_back_color;			//ウインドウ背景消去カラー
extern	LPCWSTR		s_window_caption;				//ウインドウキャプション
extern	WNDCLASS	t_window_class;					//ウインドウクラス構造体
extern	LPCWSTR		s_window_class_name;			//ウインドウクラス名
extern	HWND		p_window_handle;				//ウインドウハンドル
extern	MSG			t_window_message;				//ウインドウメッセージ
extern	RECT		t_window_rect;					//ウインドウ座標

/*共通*/
extern	BOOL		B_application_instance_exit;	//アプリ終了フラグ
extern	HINSTANCE	p_application_instance;			//アプリケーションインスタンス
extern	POINT		t_mouse_point;					//マウスカーソル座標

//ウインドウ作成
HRESULT				DXTCreateWindow();

//ウィンドウメッセージループ処理
BOOL				DXTMessageLoop();

//ウインドウ表示
BOOL				DXTShowWindow();

//ウィンドウメッセージ処理
LRESULT CALLBACK	DXTWindowProcedure(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

//クライアント領域ウインドウ領域表示x座標相対値
LONG				GetClientGapX();

//クライアント領域ウインドウ領域表示y座標相対値
LONG				GetClientGapY();

//マウスカーソルx座標参照
LONG				GetMousePointX();

//マウスカーソルy座標参照
LONG				GetMousePointY();

//クライアント領域消去カラー設定[常時実行OK]
void				SetClientClearColor(UINT32 color = DXT_CLIENT_CLEAR_COLOR, FLOAT alpha = DXT_CLIENT_CLEAR_ALPHA);

//クライアント領域サイズ設定[常時実行OK]
void				SetClientSize(LONG width = DXT_CLIENT_WIDTH, LONG height = DXT_CLIENT_HEIGHT);

//ウインドウキャプション設定[常時実行OK]
BOOL				SetWindowCaption(LPCWSTR caption = DXT_WINDOW_CAPTION);

//ウインドウ位置設定[常時実行OK]
void				SetWindowPosition(LONG left = DXT_WINDOW_LEFT, LONG top = DXT_WINDOW_TOP);

//ウインドウ矩形設定
void				SetWindowRect();

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   COM
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

//COM初期化
HRESULT	InitializeCOM();

//COM終了処理
void	UninitializeCOM();

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   WIC
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

#include 
#pragma comment(lib, "Windowscodecs.lib")

extern	IWICImagingFactory	*p_wic_factory;	//WICルートインターフェースポインタ

//WICルートインターフェース作成
HRESULT CreateWICImagingFactory();

//WICルートインターフェース開放
void	ReleaseWICImagingFactory();

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   DirectWrite
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

#include 
#pragma comment(lib, "dwrite.lib")

extern	IDWriteFactory	*p_dwrite_factory;	//DWriteルートインターフェースポインタ

//DWriteルートインターフェース作成
HRESULT CreateDWriteFactory();

//DWriteインターフェース開放
void	ReleaseDWriteFactory();

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   DirectWrite - テキスト形式オブジェクト
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

//DXTフォント伸縮列挙体
enum DXT_FONT_STRETCH {
	DXT_FONT_STRETCH_UNDEFINED			= DWRITE_FONT_STRETCH_UNDEFINED,
	DXT_FONT_STRETCH_ULTRA_CONDENSED	= DWRITE_FONT_STRETCH_ULTRA_CONDENSED,
	DXT_FONT_STRETCH_EXTRA_CONDENSED	= DWRITE_FONT_STRETCH_EXTRA_CONDENSED,
	DXT_FONT_STRETCH_CONDENSED			= DWRITE_FONT_STRETCH_CONDENSED,
	DXT_FONT_STRETCH_SEMI_CONDENSED		= DWRITE_FONT_STRETCH_SEMI_CONDENSED,
	DXT_FONT_STRETCH_NORMAL				= DWRITE_FONT_STRETCH_NORMAL,
	DXT_FONT_STRETCH_SEMI_EXPANDED		= DWRITE_FONT_STRETCH_SEMI_EXPANDED,
	DXT_FONT_STRETCH_EXPANDED			= DWRITE_FONT_STRETCH_EXPANDED,
	DXT_FONT_STRETCH_EXTRA_EXPANDED		= DWRITE_FONT_STRETCH_EXTRA_EXPANDED,
	DXT_FONT_STRETCH_ULTRA_EXPANDED		= DWRITE_FONT_STRETCH_ULTRA_EXPANDED
};

//DXTフォントスタイル列挙体
enum DXT_FONT_STYLE
{
	DXT_FONT_STYLE_NORMAL = DWRITE_FONT_STYLE_NORMAL,	//Normal
	DXT_FONT_STYLE_OBLIQUE = DWRITE_FONT_STYLE_OBLIQUE,	//Oblique
	DXT_FONT_STYLE_ITALIC = DWRITE_FONT_STYLE_ITALIC,	//Italic
};

#define DXT_FONT_DEFAULT_ENTRY					//既定フォント登録
#define DXT_FONT_ENTRY_MAX	20					//最大フォント登録数
#define DXT_FONT_NAME		L"MS ゴシック"	//既定フォント名
#define DXT_FONT_SIZE		20.0F				//既定フォントサイズ

extern	IDWriteTextFormat	*p_dwrite_text_format[DXT_FONT_ENTRY_MAX];	//DWriteテキスト形式オブジェクトポインタ
extern	int					 i_dwrite_text_format_entry;				//DWriteテキスト形式登録数

//フォントハンドル作成
HRESULT	CreateFontToHandle(int *fonthandle, LPCWSTR fontname = DXT_FONT_NAME, int fontsize = DXT_FONT_SIZE, int fontweight = DWRITE_FONT_WEIGHT_NORMAL, DXT_FONT_STYLE fontstyle = DXT_FONT_STYLE_NORMAL, DXT_FONT_STRETCH fontstretch = DXT_FONT_STRETCH_NORMAL);

//フォントハンドル破棄
BOOL	DeleteFontToHandle(int *fonthandle);

//DWriteテキスト形式登録
HRESULT	EntryDWriteTextFormat(int *fonthandle = NULL, LPCWSTR fontname = DXT_FONT_NAME, FLOAT fontsize = DXT_FONT_SIZE, int fontweight = DWRITE_FONT_WEIGHT_NORMAL, DXT_FONT_STYLE fontstyle = DXT_FONT_STYLE_NORMAL, DXT_FONT_STRETCH fontstretch = DXT_FONT_STRETCH_NORMAL);

//フォント登録数参照
int		GetFontToHandleEntry();

//最大フォント登録数参照
int		GetFontToHandleEntryMax();

//DWriteテキスト形式オブジェクト開放
void	ReleaseDWriteTextFormat();

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   Direct2D
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

#include 
#include 
#pragma comment(lib, "d2d1.lib")

//DXTアンチエイリアシングモード列挙体
enum DXT_ANTIALIAS
{
	DXT_ANTIALIAS_FORCE_DWORD	= D2D1_ANTIALIAS_MODE_FORCE_DWORD,		//DXTアンチエイリアシングモード_FORCE_DWORD
	DXT_ANTIALIAS_PER_PRIMITIVE	= D2D1_ANTIALIAS_MODE_PER_PRIMITIVE,	//DXTアンチエイリアシングモード_PER_PRIMITIVE
	DXT_ANTIALIAS_ALIASED		= D2D1_ANTIALIAS_MODE_ALIASED			//DXTアンチエイリアシングモード_ALIASED
};

//DXTテキストアンチエイリアシングモード列挙体
enum DXT_TEXT_ANTIALIAS
{
	DXT_TEXT_ANTIALIAS_DEFAULT		= D2D1_TEXT_ANTIALIAS_MODE_DEFAULT,		//DXTテキストアンチエイリアシングモード_システム既定値
	DXT_TEXT_ANTIALIAS_CLEARTYPE	= D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE,	//DXTテキストアンチエイリアシングモード_ClearType
	DXT_TEXT_ANTIALIAS_GRAYSCALE	= D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE,	//DXTテキストアンチエイリアシングモード_グレースケール
	DXT_TEXT_ANTIALIAS_ALIASED		= D2D1_TEXT_ANTIALIAS_MODE_ALIASED,		//DXTテキストアンチエイリアシングモード_不使用
};

extern	DXT_ANTIALIAS			 e_d2d1_antialias;		//D2D1アンチエイリアシングモード
extern	ID2D1Factory			*p_d2d1_factory;		//D2D1ルートインターフェースポインタ
extern	ID2D1HwndRenderTarget	*p_d2d1_render_target;	//D2D1ウインドウレンダーターゲットポインタ
extern	DXT_TEXT_ANTIALIAS		 e_d2d1_text_antialias;	//D2D1テキストアンチエイリアシングモード

//D2D1ルートインターフェース作成
HRESULT				CreateD2D1Factory();

//D2D1ウインドウレンダーターゲット作成
HRESULT				CreateD2D1HwndRenderTarget();

//DXTアンチエイリアシングモード参照
DXT_ANTIALIAS		GetD2D1AntiAlias();

//DXTテキストアンチエイリアシングモード参照
DXT_TEXT_ANTIALIAS	GetD2D1TextAntiAlias();

//D2D1ルートインターフェース開放
void				ReleaseD2D1Factory();

//D2D1ウインドウレンダーターゲット開放
void				ReleaseD2D1HwndRenderTarget();

//DXTアンチエイリアシングモード設定
void				SetD2D1AntiAlias(DXT_ANTIALIAS DXT_ANTIALIAS_x);

//DXTテキストアンチエイリアシングモード設定
void				SetD2D1TextAntiAlias(DXT_TEXT_ANTIALIAS DXT_TEXT_ANTIALIAS_x);

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   Direct2D - テキスト描画
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

//DXTテキストアライメント列挙体
enum DXT_TEXT_ALIGN
{
	DXT_TEXT_ALIGN_LEFT		= DWRITE_TEXT_ALIGNMENT_LEADING,	//文字列左寄せ
	DXT_TEXT_ALIGN_CENTER	= DWRITE_TEXT_ALIGNMENT_CENTER,		//文字列中央寄せ
	DXT_TEXT_ALIGN_RIGHT	= DWRITE_TEXT_ALIGNMENT_TRAILING	//文字列右寄せ
};

//レイアウト文字列描画
HRESULT DrawDWriteFormatText(FLOAT left, FLOAT top, FLOAT words, LPCWSTR string, ID2D1SolidColorBrush *d2d1brush, D2D1_TEXT_ANTIALIAS_MODE alias = D2D1_TEXT_ANTIALIAS_MODE_DEFAULT, int fonthandle = 0, DWRITE_TEXT_ALIGNMENT alignment_x = DWRITE_TEXT_ALIGNMENT_JUSTIFIED, DWRITE_PARAGRAPH_ALIGNMENT alignment_y = DWRITE_PARAGRAPH_ALIGNMENT_CENTER);

//レイアウト文字列描画
HRESULT DrawDWriteFormatText(FLOAT left, FLOAT top, FLOAT words, LPCWSTR string, UINT32 color = 0xffffffU, FLOAT alpha = 1.F, D2D1_TEXT_ANTIALIAS_MODE alias = D2D1_TEXT_ANTIALIAS_MODE_DEFAULT, int fonthandle = 0, DWRITE_TEXT_ALIGNMENT alignment_x = DWRITE_TEXT_ALIGNMENT_JUSTIFIED, DWRITE_PARAGRAPH_ALIGNMENT alignment_y = DWRITE_PARAGRAPH_ALIGNMENT_CENTER);

//書式文字列描画
HRESULT	DrawFormatString(int left, int top, UINT32 color, int fonthandle, FLOAT alpha, LPCWSTR format, ...);

//書式文字列描画
HRESULT	DrawFormatStringF(FLOAT left, FLOAT top, UINT32 color, int fonthandle, FLOAT alpha, LPCWSTR format, ...);

//既定フォント文字列描画
HRESULT DrawString(int left, int top, LPCWSTR string, UINT32 color = 0xffffffU, FLOAT alpha = 1.F);

//既定フォント文字列描画
HRESULT DrawStringF(FLOAT left, FLOAT top, LPCWSTR string, UINT32 color = 0xffffffU, FLOAT alpha = 1.F);

//文字列描画
HRESULT DrawStringToHandle(int left, int top, LPCWSTR string, UINT32 color = 0xffffffU, int fonthandle = 0, FLOAT alpha = 1.F);

//文字列描画
HRESULT DrawStringToHandleF(FLOAT left, FLOAT top, LPCWSTR string, UINT32 color = 0xffffffU, int fonthandle = 0, FLOAT alpha = 1.F);

//既定フォント整数値描画
HRESULT DrawValue(int left, int top, FLOAT words, LONG value, UINT32 color = 0xffffffU, FLOAT alpha = 1.F);

//既定フォント整数値描画
HRESULT DrawValueF(FLOAT left, FLOAT top, FLOAT words, LONG value, UINT32 color = 0xffffffU, FLOAT alpha = 1.F);

//整数値描画
HRESULT DrawValueToHandle(int left, int top, FLOAT words, LONG value, UINT32 color = 0xffffffU, int fonthandle = 0, FLOAT alpha = 1.F);

//整数値描画
HRESULT DrawValueToHandleF(FLOAT left, FLOAT top, FLOAT words, LONG value, UINT32 color = 0xffffffU, int fonthandle = 0, FLOAT alpha = 1.F);

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   Direct2D - 画像オブジェクト
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

//DXT画像リサイズ補間方法列挙体
enum DXT_BITMAP_RESIZE
{
	DXT_BITMAP_RESIZE_NEAREST = D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR,	//Nearest Neighbor
	DXT_BITMAP_RESIZE_LINEAR  = D2D1_BITMAP_INTERPOLATION_MODE_LINEAR				//Linear
};

#define DXT_BITMAP_ENTRY_MAX	100	//最大画像登録数

extern	ID2D1Bitmap			*p_d2d1_bitmap[DXT_BITMAP_ENTRY_MAX];	//D2D1画像オブジェクトポインタ
extern	int					 i_d2d1_bitmap_entry;					//D2D1画像登録数
extern	DXT_BITMAP_RESIZE	 e_d2d1_bitmap_resize;					//D2D1画像リサイズ補間方法

//画像オブジェクト破棄
BOOL				DeleteGraph(int *bitmaphandle);

//D2D1画像登録数参照
int					GetD2D1BitmapEntry();

//最大画像登録数参照
int					GetD2D1BitmapEntryMax();

//D2D1画像リサイズ補間方法参照
DXT_BITMAP_RESIZE	GetD2D1BitmapResize();

//画像オブジェクト縦サイズ参照
FLOAT				GetGraphHeight(int bitmaphandle);

//画像オブジェクトサイズ参照
D2D1_SIZE_F			GetGraphSize(int bitmaphandle);

//画像オブジェクト横サイズ参照
FLOAT				GetGraphWidth(int bitmaphandle);

//画像オブジェクト登録
HRESULT				LoadGraph(int *bitmaphandle, LPCWSTR filename);

//D2D1画像オブジェクト開放
void				ReleaseD2D1BitmapObject();

//D2D1画像リサイズ補間方法設定
void				SetD2D1BitmapResize(DXT_BITMAP_RESIZE DXT_BITMAP_RESIZE_x);

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   Direct2D - 画像オブジェクト描画
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

//D2D1画像オブジェクト描画
BOOL	DrawD2D1BitmapObject(ID2D1Bitmap *bitmap, const D2D1_RECT_F *dst_rect = (const D2D1_RECT_F*)0, FLOAT alpha = 1.F, const D2D1_RECT_F *src_rect = (const D2D1_RECT_F*)0);

//画像オブジェクト拡縮描画
BOOL	DrawExtendGraph(int left, int top, int bitmaphandle, FLOAT extend = 1.F, FLOAT alpha = 1.F);

//画像オブジェクト拡縮描画
BOOL	DrawExtendGraphF(FLOAT left, FLOAT top, int bitmaphandle, FLOAT extend = 1.F, FLOAT alpha = 1.F);

//画像オブジェクト描画
BOOL	DrawGraph(int left, int top, int bitmaphandle, FLOAT alpha = 1.F);

//画像オブジェクト描画
BOOL	DrawGraphF(FLOAT left, FLOAT top, int bitmaphandle, FLOAT alpha = 1.F);

//画像オブジェクトブロック転送描画
BOOL	DrawRectGraph(int left, int top, int src_x, int src_y, int width, int height, int bitmaphandle, FLOAT extend = 1.F, FLOAT alpha = 1.F);

//画像オブジェクトブロック転送描画
BOOL	DrawRectGraphF(FLOAT left, FLOAT top, FLOAT src_x, FLOAT src_y, FLOAT width, FLOAT height, int bitmaphandle, FLOAT extend = 1.F, FLOAT alpha = 1.F);

//画像オブジェクト回転描画
BOOL	DrawRotateGraph(int cx, int cy, int bitmaphandle, FLOAT angle = 1.F, FLOAT extend_x = 1.F, FLOAT extend_y = 1.F, FLOAT alpha = 1.F, BOOL turn_x = FALSE, BOOL turn_y = FALSE);

//画像オブジェクト回転描画
BOOL	DrawRotateGraphF(FLOAT cx, FLOAT cy, int bitmaphandle, FLOAT angle = 1.F, FLOAT exten_x = 1.F, FLOAT extend_y = 1.F, FLOAT alpha = 1.F, BOOL turn_x = FALSE, BOOL turn_y = FALSE);

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   Direct2D - 図形描画
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

//D2D1四角形描画
BOOL	DrawD2D1Rectangle(const D2D1_RECT_F *rect, ID2D1Brush *rectbrush, FLOAT stroke = 1.F, ID2D1StrokeStyle *style = NULL, BOOL fillflag = FALSE, ID2D1Brush *fillbrush = NULL);

//D2D1四角形描画
HRESULT	DrawD2D1Rectangle(FLOAT left, FLOAT top, FLOAT width, FLOAT height, UINT32 color, FLOAT stroke = 1, FLOAT alpha = 1.F, ID2D1StrokeStyle *style = NULL, BOOL fillflag = FALSE, UINT32 fillcolor = 0U, FLOAT fillalpha = 1.F);

//四角形描画
HRESULT	DrawBox(int left, int top, int width, int height, UINT32 framecolor, int stroke = 1, FLOAT framealpha = 1.F, BOOL fillflag = FALSE, UINT32 fillcolor = 0U, FLOAT fillalpha = 1.F);

//塗りつぶし四角形描画
HRESULT	DrawFilledBox(int left, int top, int width, int height, UINT32 color, FLOAT alpha = 1.F);

//角丸四角形描画
HRESULT	DrawRoundedBox(int left, int top, int width, int height, FLOAT rad, UINT32 framecolor, int stroke = 1, FLOAT framealpha = 1.F, BOOL fillflag = FALSE, UINT32 fillcolor = 0U, FLOAT fillalpha = 1.F);

//塗りつぶし角丸四角形描画
HRESULT	DrawRoundedFilledBox(int left, int top, int width, int height, FLOAT rad, UINT32 color, FLOAT alpha = 1.F);

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   DirectInput
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

#define	DIRECTINPUT_VERSION		0x0800	//DirectInput Version
#define INITGUID						//Initialize GUID

#include 
#pragma comment(lib, "dinput8.lib")
#pragma comment(lib, "dxguid.lib")

extern LPDIRECTINPUT8	p_di8;	//DI8インターフェースポインタ

//DI8インターフェース作成
HRESULT CreateDI8Interface();

//DI8インターフェース開放
void	ReleaseDI8Interface();

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   DirectInput - Keyboard
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

//DXTキーボードキー列挙体
enum DXT_KEY
{
	DXT_KEY_ESC				= DIK_ESCAPE,		// Escキー
	DXT_KEY_1				= DIK_1,			// 1キー
	DXT_KEY_2				= DIK_2,			// 2キー
	DXT_KEY_3				= DIK_3,			// 3キー
	DXT_KEY_4				= DIK_4,			// 4キー
	DXT_KEY_5				= DIK_5,			// 5キー
	DXT_KEY_6				= DIK_6,			// 6キー
	DXT_KEY_7				= DIK_7,			// 7キー
	DXT_KEY_8				= DIK_8,			// 8キー
	DXT_KEY_9				= DIK_9,			// 9キー
	DXT_KEY_0				= DIK_0,			// 0キー
	DXT_KEY_MINUS			= DIK_MINUS,		// -キー
	DXT_KEY_EQUALS			= DIK_EQUALS,		// =キー
	DXT_KEY_BACK_SPACE		= DIK_BACK,			// Back Spaceキー
	DXT_KEY_TAB				= DIK_TAB,			// Tabキー
	DXT_KEY_Q				= DIK_Q,			// Qキー
	DXT_KEY_W				= DIK_W,			// Wキー
	DXT_KEY_E				= DIK_E,			// Eキー
	DXT_KEY_R				= DIK_R,			// Rキー
	DXT_KEY_T				= DIK_T,			// Tキー
	DXT_KEY_Y				= DIK_Y,			// Yキー
	DXT_KEY_U				= DIK_U,			// Uキー
	DXT_KEY_I				= DIK_I,			// Iキー
	DXT_KEY_O				= DIK_O,			// Oキー
	DXT_KEY_P				= DIK_P,			// Pキー
	DXT_KEY_BRACKET_L		= DIK_LBRACKET,		// [キー
	DXT_KEY_BRACKET_R		= DIK_RBRACKET,		// ]キー
	DXT_KEY_ENTER			= DIK_RETURN,		// Enterキー
	DXT_KEY_CTRL_L			= DIK_LCONTROL,		// 左Ctrlキー
	DXT_KEY_A				= DIK_A,			// Aキー
	DXT_KEY_S				= DIK_S,			// Sキー
	DXT_KEY_D				= DIK_D,			// Dキー
	DXT_KEY_F				= DIK_F,			// Fキー
	DXT_KEY_G				= DIK_G,			// Gキー
	DXT_KEY_H				= DIK_H,			// Hキー
	DXT_KEY_J				= DIK_J,			// Jキー
	DXT_KEY_K				= DIK_K,			// Kキー
	DXT_KEY_L				= DIK_L,			// Lキー
	DXT_KEY_SEMICOLON		= DIK_SEMICOLON,	// ;キー
	DXT_KEY_APOSTROPHE		= DIK_APOSTROPHE,	// 'キー
	DXT_KEY_GRAVE			= DIK_GRAVE,		// `キー
	DXT_KEY_SHIFT_L			= DIK_LSHIFT,		// 左Shiftキー
	DXT_KEY_BACKSLASH		= DIK_BACKSLASH,	// \[Back Slash]キー
	DXT_KEY_Z				= DIK_Z,			// Zキー
	DXT_KEY_X				= DIK_X,			// Xキー
	DXT_KEY_C				= DIK_C,			// Cキー
	DXT_KEY_V				= DIK_V,			// Vキー
	DXT_KEY_B				= DIK_B,			// Bキー
	DXT_KEY_N				= DIK_N,			// Nキー
	DXT_KEY_M				= DIK_M,			// Mキー
	DXT_KEY_COMMA			= DIK_COMMA,		// ,キー
	DXT_KEY_PERIOD			= DIK_PERIOD,		// .キー
	DXT_KEY_SLASH			= DIK_SLASH,		// /キー
	DXT_KEY_SHIFT_R			= DIK_RSHIFT,		// 右Shiftキー
	DXT_KEY_NUMPAD_MULTIPLY	= DIK_MULTIPLY,		// [Num]*キー
	DXT_KEY_ALT_L			= DIK_LMENU,		// 左Altキー
	DXT_KEY_SPACE			= DIK_SPACE,		// Spaceキー
	DXT_KEY_CAPS_LOCK		= DIK_CAPITAL,		// Caps Lockキー
	DXT_KEY_F1				= DIK_F1,			// F1キー
	DXT_KEY_F2				= DIK_F2,			// F2キー
	DXT_KEY_F3				= DIK_F3,			// F3キー
	DXT_KEY_F4				= DIK_F4,			// F4キー
	DXT_KEY_F5				= DIK_F5,			// F5キー
	DXT_KEY_F6				= DIK_F6,			// F6キー
	DXT_KEY_F7				= DIK_F7,			// F7キー
	DXT_KEY_F8				= DIK_F8,			// F8キー
	DXT_KEY_F9				= DIK_F9,			// F9キー
	DXT_KEY_F10				= DIK_F10,			// F10キー
	DXT_KEY_NUMPAD_NUM_LOCK	= DIK_NUMLOCK,		// [Num]Num Lockキー
	DXT_KEY_SCROLL_LOCK		= DIK_SCROLL,		// Scroll Lockキー
	DXT_KEY_NUMPAD_7		= DIK_NUMPAD7,		// [Num]7キー
	DXT_KEY_NUMPAD_8		= DIK_NUMPAD8,		// [Num]8キー
	DXT_KEY_NUMPAD_9		= DIK_NUMPAD9,		// [Num]9キー
	DXT_KEY_NUMPAD_SUBTRACT	= DIK_SUBTRACT,		// [Num]-キー
	DXT_KEY_NUMPAD_4		= DIK_NUMPAD4,		// [Num]4キー
	DXT_KEY_NUMPAD_5		= DIK_NUMPAD5,		// [Num]5キー
	DXT_KEY_NUMPAD_6		= DIK_NUMPAD6,		// [Num]6キー
	DXT_KEY_NUMPAD_ADD		= DIK_ADD,			// [Num]+キー
	DXT_KEY_NUMPAD_1		= DIK_NUMPAD1,		// [Num]1キー
	DXT_KEY_NUMPAD_2		= DIK_NUMPAD2,		// [Num]2キー
	DXT_KEY_NUMPAD_3		= DIK_NUMPAD3,		// [Num]3キー
	DXT_KEY_NUMPAD_0		= DIK_NUMPAD0,		// [Num]0キー
	DXT_KEY_NUMPAD_DECIMAL	= DIK_DECIMAL,		// [Num].キー
	DXT_KEY_F11				= DIK_F11,			// F11キー
	DXT_KEY_F12				= DIK_F12,			// F12キー
	DXT_KEY_F13				= DIK_F13,			// F13キー
	DXT_KEY_F14				= DIK_F14,			// F14キー
	DXT_KEY_F15				= DIK_F15,			// F15キー
	DXT_KEY_KANA			= DIK_KANA,			// カナキー
	DXT_KEY_CONVERT			= DIK_CONVERT,		// 変換キー
	DXT_KEY_NOCONVERT		= DIK_NOCONVERT,	// 無変換キー
	DXT_KEY_YEN				= DIK_YEN,			// \キー
	DXT_KEY_NUMPAD_EQUALS	= DIK_NUMPADEQUALS,	// [Num]=キー
	DXT_KEY_CIRCUMFLEX		= DIK_CIRCUMFLEX,	// ^キー
	DXT_KEY_AT				= DIK_AT,			// @キー
	DXT_KEY_COLON			= DIK_COLON,		// :キー
	DXT_KEY_UNDERLINE		= DIK_UNDERLINE,	// _キー
	DXT_KEY_KANJI			= DIK_KANJI,		// 漢字キー
	DXT_KEY_STOP			= DIK_STOP,			// Stopキー
	DXT_KEY_AX				= DIK_AX,			// [Japan AX]AXキー
	DXT_KEY_UNLABELED		= DIK_UNLABELED,	// [J3100]Unlabeledキー
	DXT_KEY_NUMPAD_ENTER	= DIK_NUMPADENTER,	// [Num]Enterキー
	DXT_KEY_CTRL_R			= DIK_RCONTROL,		// 右Ctrlキー
	DXT_KEY_NUMPAD_COMMA	= DIK_NUMPADCOMMA,	// [Num],キー
	DXT_KEY_NUMPAD_DIVIDE	= DIK_DIVIDE,		// [Num]/キー
	DXT_KEY_SYS_RQ			= DIK_SYSRQ,		// Sys Rqキー
	DXT_KEY_ALT_R			= DIK_RMENU,		// 右Altキー
	DXT_KEY_PAUSE			= DIK_PAUSE,		// Pauseキー
	DXT_KEY_HOME			= DIK_HOME,			// Homeキー
	DXT_KEY_UP				= DIK_UP,			// ↑キー
	DXT_KEY_PAGE_UP			= DIK_PRIOR,		// Page Upキー
	DXT_KEY_LEFT			= DIK_LEFT,			// ←キー
	DXT_KEY_RIGHT			= DIK_RIGHT,		// →キー
	DXT_KEY_END				= DIK_END,			// Endキー
	DXT_KEY_DOWN			= DIK_DOWN,			// ↓キー
	DXT_KEY_PAGE_DOWN		= DIK_NEXT,			// Page Downキー
	DXT_KEY_INSERT			= DIK_INSERT,		// Insertキー
	DXT_KEY_DELETE			= DIK_DELETE,		// Deleteキー
	DXT_KEY_LWIN			= DIK_LWIN,			// [Windows]左Winキー
	DXT_KEY_RWIN			= DIK_RWIN,			// [Windows]右Winキー
	DXT_KEY_MENU			= DIK_APPS,			// Menuキー
	DXT_KEY_POWER			= DIK_POWER,		// Powerキー
	DXT_KEY_SLEEP			= DIK_SLEEP,		// [Windows]Sleepキー
	DXT_KEY_224				= 224,				// [Undefined]224キー
	DXT_KEY_225				= 225,				// [Undefined]225キー
	DXT_KEY_226				= 226,				// [Undefined]226キー
	DXT_KEY_WAKE			= DIK_WAKE,			// Wakeキー
	DXT_KEY_228				= 228,				// [Undefined]228キー
	DXT_KEY_WEB_SEARCH		= DIK_WEBSEARCH,	// Web Searchキー
	DXT_KEY_WEB_FAVORITES	= DIK_WEBFAVORITES,	// Web Favoritesキー
	DXT_KEY_WEB_REFRESH		= DIK_WEBREFRESH,	// Web Refreshキー
	DXT_KEY_WEB_STOP		= DIK_WEBSTOP,		// Web Stopキー
	DXT_KEY_WEB_FORWARD		= DIK_WEBFORWARD,	// Web Forwardキー
	DXT_KEY_WEB_BACK		= DIK_WEBBACK,		// Web Backキー
	DXT_KEY_MY_COMPUTER		= DIK_MYCOMPUTER,	// My Computerキー
	DXT_KEY_MAIL			= DIK_MAIL,			// Mailキー
	DXT_KEY_MEDIA_SELECT	= DIK_MEDIASELECT,	// Media SeLectキー
	DXT_KEY_238				= 238,				// [Undefined]238キー
	DXT_KEY_239				= 239,				// [Undefined]239キー
	DXT_KEY_240				= 240,				// [Undefined]240キー
	DXT_KEY_241				= 241,				// [Undefined]241キー
	DXT_KEY_242				= 242,				// [Undefined]242キー
	DXT_KEY_243				= 243,				// [Undefined]243キー
	DXT_KEY_244				= 244,				// [Undefined]244キー
	DXT_KEY_245				= 245,				// [Undefined]245キー
	DXT_KEY_246				= 246,				// [Undefined]246キー
	DXT_KEY_247				= 247,				// [Undefined]247キー
	DXT_KEY_248				= 248,				// [Undefined]248キー
	DXT_KEY_249				= 249,				// [Undefined]249キー
	DXT_KEY_250				= 250,				// [Undefined]250キー
	DXT_KEY_251				= 251,				// [Undefined]251キー
	DXT_KEY_252				= 252,				// [Undefined]252キー
	DXT_KEY_253				= 253,				// [Undefined]253キー
	DXT_KEY_254				= 254,				// [Undefined]254キー
	DXT_KEY_255				= 255,				// [Undefined]255キー
	DXT_KEY_MAX									// キーボードキー列挙子最大値
};

#define DXT_KEYBOARD_KEY_BUFFER	DXT_KEY_MAX	//キーボードキー入力バッファサイズ
#define DXT_KEYBOARD_KEY_MAX	DXT_KEY_238	//キーボードキー総数

extern LPDIRECTINPUTDEVICE8 p_di8_keyboard;									//DI8キーボード入力デバイスオブジェクトポインタ
extern DIDEVCAPS			t_di8_keyboard_caps;							//DI8キーボード入力デバイス能力オブジェクト
extern int					i_di8_keyboard_key_max;							//DI8キーボードキー数
extern int					i_di8_keyboard_press[DXT_KEYBOARD_KEY_BUFFER];	//DI8キー入力継続値
extern char					c_di8_keyboard_state[DXT_KEYBOARD_KEY_BUFFER];	//DI8キー入力バッファ

//DI8キーボード入力デバイスオブジェクト作成
HRESULT				CreateDI8Keyboard();

//DI8キーボード入力継続値参照
int					GetDI8KeyboardPressTime(DXT_KEY DXT_KEY_x);

//DI8キーボード入力状態取得
void	CALLBACK	GetDI8KeyboardState();

//DI8キーボード押下キー総数参照
int					GetDI8KeyboardTotalPressKey();

//DI8キーボード入力デバイスオブジェクト開放
void				ReleaseDI8Keyboard();

//DI8キーボード入力継続値設定
void				SetDI8KeyboardPressTime(DXT_KEY DXT_KEY_x = DXT_KEY_MAX, int presstime = 0);

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   DirectInput - Joystick
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

//DXTジョイパッドキー列挙体
enum DXT_PAD
{
	DXT_PAD_1,				//ボタン1
	DXT_PAD_2,				//ボタン2
	DXT_PAD_3,				//ボタン3
	DXT_PAD_4,				//ボタン4
	DXT_PAD_5,				//ボタン5
	DXT_PAD_6,				//ボタン6
	DXT_PAD_7,				//ボタン7
	DXT_PAD_8,				//ボタン8
	DXT_PAD_9,				//ボタン9
	DXT_PAD_10,				//ボタン10
	DXT_PAD_11,				//ボタン11
	DXT_PAD_12,				//ボタン12
	DXT_PAD_13,				//ボタン13
	DXT_PAD_14,				//ボタン14
	DXT_PAD_15,				//ボタン15
	DXT_PAD_16,				//ボタン16
	DXT_PAD_17,				//ボタン17
	DXT_PAD_18,				//ボタン18
	DXT_PAD_19,				//ボタン19
	DXT_PAD_20,				//ボタン20
	DXT_PAD_21,				//ボタン21
	DXT_PAD_22,				//ボタン22
	DXT_PAD_23,				//ボタン23
	DXT_PAD_24,				//ボタン24
	DXT_PAD_25,				//ボタン25
	DXT_PAD_26,				//ボタン26
	DXT_PAD_27,				//ボタン27
	DXT_PAD_28,				//ボタン28
	DXT_PAD_29,				//ボタン29
	DXT_PAD_30,				//ボタン30
	DXT_PAD_31,				//ボタン31
	DXT_PAD_32,				//ボタン32
	DXT_PAD_UP,				//上方向キー
	DXT_PAD_DOWN,			//下方向キー
	DXT_PAD_LEFT,			//左方向キー
	DXT_PAD_RIGHT,			//右方向キー
	DXT_PAD_RANGE_PITCH,	//縦方向キー傾斜度
	DXT_PAD_RANGE_SLIDE,	//横方向キー傾斜度
	DXT_PAD_MAX				//ジョイパッドキー列挙子最大値
};

//ジョイパッドマクロ
#define DXT_PAD_BUTTON_MAX	 10					//ジョイパッドボタン数
#define DXT_PAD_RANGE_MAX	100L				//ジョイパッドアナログ方向キー入力範囲[最大値]
#define DXT_PAD_RANGE_MIN	-DXT_PAD_RANGE_MAX	//ジョイパッドアナログ方向キー入力範囲[最小値]

extern LPDIRECTINPUTDEVICE8	p_di8_joypad;						//DI8ジョイパッド入力デバイスオブジェクトポインタ
extern int					i_di8_joypad_button_max;			//DI8ジョイパッドボタン数
extern DIDEVCAPS			t_di8_joypad_caps;					//DI8ジョイパッド入力デバイス能力オブジェクト
extern int					i_di8_joypad_press[DXT_PAD_MAX];	//DI8ジョイパッド入力継続値
extern DIJOYSTATE			t_di8_joypad_state;					//DI8ジョイパッド入力バッファ

//DI8ジョイパッド入力状態初期化
void				ClearDI8JoystickState();

//DI8ジョイパッド入力デバイスオブジェクト作成コールバック関数
BOOL	CALLBACK	CreateDI8JoystickDeviceCallBack(const DIDEVICEINSTANCE *deviceinstance, void *context);

//DI8ジョイパッド入力デバイスオブジェクト作成
HRESULT				CreateDI8Joystick();

//DI8ジョイパッド入力デバイスオブジェクト列挙コールバック関数
BOOL	CALLBACK	EnumDI8JoystickDeviceCallback(const DIDEVICEOBJECTINSTANCE *pdidoi, void *context);

//DI8ジョイパッド方向キー入力強度参照
FLOAT				GetDI8JoystickDegree(DXT_PAD DXT_PAD_RANGE_x);

//DI8ジョイパッド入力継続値参照
int					GetDI8JoystickPressTime(DXT_PAD DXT_PAD_x);

//DI8ジョイパッド入力状態取得
void	CALLBACK	GetDI8JoystickState();

//DI8ジョイパッド押下キー総数参照
int					GetDI8JoystickTotalPressKey();

//DI8ジョイパッド入力デバイスオブジェクト開放
void				ReleaseDI8Joystick();

//DI8ジョイパッド入力継続値設定
void				SetDI8JoystickPressTime(DXT_PAD DXT_PAD_x = DXT_PAD_MAX, int presstime = 0);

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   DirectInput - Mouse
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

//DXTマウスキー列挙体
enum DXT_MOUSE
{
	DXT_MOUSE_LEFT,		//左ボタン
	DXT_MOUSE_RIGHT,	//右ボタン
	DXT_MOUSE_CENTER,	//中ボタン
	DXT_MOUSE_EX_1,		//追加ボタン1
	DXT_MOUSE_EX_2,		//追加ボタン2
	DXT_MOUSE_EX_3,		//追加ボタン3
	DXT_MOUSE_EX_4,		//追加ボタン4
	DXT_MOUSE_EX_5,		//追加ボタン5
	DXT_MOUSE_MAX		//マウスキー列挙子最大値
};

//マウスマクロ
#define DXT_MOUSE_CLICK_INTERVAL	DXT_FPS	//クリック感知最大フレーム数
#define DXT_MOUSE_BUTTON_MAX			4	//既定マウスボタン数

extern LPDIRECTINPUTDEVICE8	p_di8_mouse;							//DI8マウスデバイスオブジェクトポインタ
extern int					i_di8_mouse_button_max;					//DI8マウスボタン数
extern DIDEVCAPS			t_di8_mouse_caps;						//DI8マウス入力デバイス能力オブジェクト
extern BOOL					i_di8_mouse_click[DXT_MOUSE_MAX];		//DI8マウスボタンクリックフラグ
extern int					i_di8_mouse_click_interval;				//DI8マウスボタンクリック感知最大フレーム数
extern int					i_di8_mouse_press[DXT_MOUSE_MAX];		//DI8マウスボタン入力継続値
extern int					i_di8_mouse_press_last[DXT_MOUSE_MAX];	//DI8マウスボタン入力継続値[前回]
extern DIMOUSESTATE 		t_di8_mouse_state;						//DI8マウス入力バッファ

//DI8マウス入力状態初期化
void				ClearDI8MouseState();

//DI8マウス入力デバイスオブジェクト作成
HRESULT				CreateDI8Mouse();

//DI8マウスクリック入力参照
BOOL				GetDI8MouseClick(DXT_MOUSE DXT_MOUSE_x);

//DI8マウス入力継続値参照
int					GetDI8MousePressTime(DXT_MOUSE DXT_MOUSE_x);

//DI8マウス入力状態取得
void	CALLBACK	GetDI8MouseState();

//DI8マウス押下キー総数参照
int					GetDI8MouseTotalPressKey();

//DI8マウス入力デバイスオブジェクト開放
void				ReleaseDI8Mouse();

//DI8マウス入力継続値設定
void				SetDI8MousePressTime(DXT_MOUSE DXT_MOUSE_x = DXT_MOUSE_MAX, int presstime = 0);

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   DirectSound
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

#include 
#include 
#pragma comment(lib, "dsound.lib")
#pragma comment (lib, "winmm.lib")

extern IDirectSoundBuffer8	*p_ds8_2nd_buffer;	//DS8セカンダリバッファ
extern DSBUFFERDESC			 t_ds8_buffer_desc;	//DS8バッファ情報
extern DSCAPS				 t_ds8_caps;		//DS8デバイス能力オブジェクト
extern IDirectSound8		*p_ds8_device;		//DS8デバイス

BOOL	CALLBACK	CreateDS8DeviceCallback(LPGUID lpGuid, LPCSTR lpcstrDescription, LPCSTR lpcstrModule, LPVOID lpContext);
HRESULT				CreateDS8Interface();
BOOL	CALLBACK	EnumDS8DeviceCallback(LPGUID lpGUID, LPCTSTR lpszDesc, LPCTSTR lpszDrvName, LPVOID lpContext);
void				ReleaseDS8Interface();

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   Functions
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

//DirectXインターフェース作成
HRESULT	CreateDirectXInterface();

//DXT初期化
BOOL	DXTInitialize();

//DXT終了処理
void	DXTUnInitialize();

//DirectXインターフェース開放
void	ReleaseDirectXInterface();

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   Options
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

#ifdef DXT_OPTIONS

//フォントデータ構造体
struct FontData
{
	int					handle;		//フォントハンドル
	LPCWSTR				name;		//フォント名
	int					size;		//フォントサイズ
	DXT_FONT_STRETCH	stretch;	//フォント伸縮
	DXT_FONT_STYLE		style;		//フォントスタイル
	int					weight;		//フォント太さ
};

//フォントハンドル作成
HRESULT	CreateFontToHandle(FontData *fd);

//フォントハンドル破棄
BOOL	DeleteFontToHandle(FontData *fd);

//画像データ構造体
struct	GraphData
{
	int		handle;	//画像ハンドル
	FLOAT	height;	//画像高さ
	LPCWSTR	name;	//画像名
	LPCWSTR	path;	//画像ファイルパス
	FLOAT	width;	//画像幅
};

//画像オブジェクト破棄
BOOL	DeleteGraph(GraphData *gd);

//画像サイズ計測
void	ScaleGraphSize(GraphData *object);

//音楽データ構造体
struct SoundData
{
	int		handle;	//音楽ハンドル
	LPCWSTR	name;	//音楽名
	LPCWSTR	path;	//音楽ファイルパス
};

#endif

//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++
//   関数マクロ
//****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++

#define DXT_End()						DXTUnInitialize()						//DXT終了処理
#define DXT_Init()						if (!DXTInitialize()) return 0			//DXT初期化
#define DXT_KeyDown(DXT_KEY_x)			GetDI8KeyboardPressTime(DXT_KEY_x)		//キーボードキー押下チェック
#define DXT_MouseClick(DXT_MOUSE_x)		GetDI8MouseClick(DXT_MOUSE_x)			//マウスキークリックチェック
#define DXT_MouseDown(DXT_MOUSE_x)		GetDI8MousePressTime(DXT_MOUSE_x)		//マウスキー押下チェック
#define DXT_PadDegree(DXT_PAD_RANGE_x)	GetDI8JoystickDegree(DXT_PAD_RANGE_x)	//ジョイパッド方向キー入力強度
#define DXT_PadDown(DXT_PAD_x)			GetDI8JoystickPressTime(DXT_PAD_x)		//ジョイパッドキー押下チェック
#define DXT_ShowWindow()				if (!DXTShowWindow()) return 0			//ウインドウ表示
↑文字数が多すぎるのか、スポイラーが使えない。


【時間】
ログファイル用の日付時刻取得関数しか作っていない。
高精度のタイマーを早く作らねば…。

【ログ】
ファイル出力は、基本形はできました。
エラーメッセージは全てファイル出力しますが、ライブラリ下準備関数の個々の成功は
出力しない作りにしています。

【ウインドウ】
全画面モードは、現在使わない予定です。
デスクトップ・ウインドウ・クライアント領域の相対位置関連の変数を新設しました。
あとは、アプリ立ち上げ時のクライアント領域サイズを記憶して、ワンボタンでその
サイズにいつでも戻れるようにしたり、今は縦横自由自在に伸びる画面を伸縮したまま
で、これまたボタン1つで立ち上げ時のアスペクト比に整えたりできるようにする予定
です。

【文字列描画】
画像と同様、レンダーターゲットを使って描画しているので、その気になれば拡大縮小・
回転・反転などもできますが、その機能は真の描画命令とは別の所にある関係上、他の
自作描画関数の作りや種類・使い方までにも影響を及ぼすので、細かく練りながら制作
を進めて行こうと思っています。
書式文字列描画については、放置中(放棄?)です。

【図形描画】
Direct2DでDxLibのDrawModiGraphも作れると思っていましたが、一見平面描画でも3D要素
満載だから無理?みたいです。 自分の勉強不足だけかも知れませんけど…。
あと、多角形描画は直線描画の連続で実現できますが、塗りつぶしや線が太い時の綺麗な
角の描画はどうすりゃいいんだ??? とりあえず、放置。
そんな事より、先に楕円・直線描画関数を作らねば。

【デバイス入力】
手付かずのまま、何も進んでいない。

【FPS】
とりあえず、機械任せ。
自由な数値を設定できるようにする予定。

【全体】
変数・関数を追加するに連れ、ドッと重みが増してきました。
描画関数は、汎用的な物と詳細設定できる物とその中間的な物を、軽さ別・用途別に色んな
タイプを作らないといけない感じになってきました。
Direct3Dも後々取り入れなければならないような気が…。
サウンド関数も早く作りたいのですが、タイマー無いし、描画関数他まだまだ調っていない
から、それどころではないです。



毎日チョロチョロイジってはいますが、思う様には進まないものです。
動画も扱いたいし、先は長そうだ。

コメントはまだありません。