1 // -------------------------------------------------------------------------------
2 //
3 //         DXライブラリ        Windows専用関数プロトタイプ宣言用ヘッダファイル
4 //
5 //                 Ver 3.22c
6 //
7 // -------------------------------------------------------------------------------
8 module dxlib_d.DxFunctionWin;
9 
10 
11 version (Windows):
12 
13 nothrow @nogc:
14 
15 private static import dxlib_d.DxLib;
16 public import dxlib_d.DxDataType;
17 
18 // 関数プロトタイプ宣言------------------------------------------------------------------
19 
20 extern (C++, DxLib) {
21 	// DxWindow.cpp関数プロトタイプ宣言
22 
23 	// 便利関数
24 
25 	/**
26 	 * 指定の名前、タイプのリソースのアドレスとサイズを取得する
27 	 *
28 	 * Returns: -1:失敗  0:成功
29 	 */
30 	extern int GetResourceInfo(const (dxlib_d.DxDataType.TCHAR)* ResourceName, const (dxlib_d.DxDataType.TCHAR)* ResourceType, void** DataPointerP, size_t* DataSizeP);
31 
32 	/**
33 	 * 指定の名前、タイプのリソースのアドレスとサイズを取得する
34 	 *
35 	 * Returns: -1:失敗  0:成功
36 	 */
37 	extern int GetResourceInfoWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ResourceName, size_t ResourceNameLength, const (dxlib_d.DxDataType.TCHAR)* ResourceType, size_t ResourceTypeLength, void** DataPointerP, size_t* DataSizeP);
38 
39 	/**
40 	 * リソースID値からリソース名を取得する
41 	 */
42 	extern const (dxlib_d.DxDataType.TCHAR)* GetResourceIDString(int ResourceID);
43 
44 	// ウインドウ関係情報取得関数
45 
46 	/**
47 	 * GetWindowClientRectの旧名称
48 	 */
49 	extern int GetWindowCRect(dxlib_d.DxDataType.RECT* RectBuf);
50 
51 	/**
52 	 * メインウインドウのクライアント領域を取得する
53 	 */
54 	extern int GetWindowClientRect(dxlib_d.DxDataType.RECT* RectBuf);
55 
56 	/**
57 	 * メインウインドウの枠の部分も含めた全体の領域を取得する
58 	 */
59 	extern int GetWindowFrameRect(dxlib_d.DxDataType.RECT* RectBuf);
60 
61 	/**
62 	 * メインウインドウがアクティブかどうかを取得する
63 	 *
64 	 * Returns: dxlib_d.DxDataType.TRUE:アクティブ  dxlib_d.DxDataType.FALSE:非アクティブ
65 	 */
66 	extern int GetWindowActiveFlag();
67 
68 	/**
69 	 * メインウインドウが最小化されているかどうかを取得する
70 	 *
71 	 * Returns: dxlib_d.DxDataType.TRUE:最小化されている  dxlib_d.DxDataType.FALSE:最小化されていない
72 	 */
73 	extern int GetWindowMinSizeFlag();
74 
75 	/**
76 	 * メインウインドウが最大化されているかどうかを取得する
77 	 *
78 	 * Returns: dxlib_d.DxDataType.TRUE:最大化されている  dxlib_d.DxDataType.FALSE:最大化されていない
79 	 */
80 	extern int GetWindowMaxSizeFlag();
81 
82 	/**
83 	 * GetWindowActiveFlagの別名関数
84 	 */
85 	extern int GetActiveFlag();
86 
87 	/**
88 	 * メインウインドウのウインドウハンドルを取得する
89 	 */
90 	extern dxlib_d.DxDataTypeWin.HWND GetMainWindowHandle();
91 
92 	/**
93 	 * ウインドウモードで起動しているかどうかを取得する
94 	 *
95 	 * Returns: dxlib_d.DxDataType.TRUE:ウインドウモード  dxlib_d.DxDataType.FALSE:フルスクリーンモード
96 	 */
97 	extern int GetWindowModeFlag();
98 
99 	/**
100 	 * 起動時のデスクトップの画面情報を取得する
101 	 *
102 	 * Params:
103 	 *      SizeX = デスクトップの横解像度を格納する変数のポインタ
104 	 *      SizeY = 縦解像度を格納する変数のポインタ
105 	 *      ColorBitDepth = 画面カラービット数を格納する変数のポインタ
106 	 *      RefreshRate = デスクトップのリフレッシュレートを格納する変数のポインタ
107 	 *      LeftTopX = デスクトップの左上X座標を格納する変数のポインタ
108 	 *      LeftTopY = デスクトップの左上Y座標を格納する変数のポインタ
109 	 *      PixelSizeX = OSの拡大率設定の影響を受けないデスクトップの横解像度を格納する変数のポインタ
110 	 *      PixelSizeY = OSの拡大率設定の影響を受けないデスクトップの縦解像度を格納する変数のポインタ
111 	 *      XDpi = X軸のDPI
112 	 *      YDpi = Y軸のDPI
113 	 */
114 	extern int GetDefaultState(int* SizeX, int* SizeY, int* ColorBitDepth, int* RefreshRate = null, int* LeftTopX = null, int* LeftTopY = null, int* PixelSizeX = null, int* PixelSizeY = null, int* XDpi = null, int* YDpi = null);
115 
116 	/**
117 	 * モニターのDPIを取得する
118 	 */
119 	extern int GetMonitorDpi(int* XDpi, int* YDpi, int MonitorIndex = -1);
120 
121 	/**
122 	 * メインウインドウが非アクティブになり、処理が一時停止していたかどうかを取得する
123 	 *
124 	 * Params:
125 	 *      ResetFlag = dxlib_d.DxDataType.TRUE:状態をリセット dxlib_d.DxDataType.FALSE:状態をリセットしない
126 	 *
127 	 * Returns: 0:一時停止はしていない  1:一時停止していた
128 	 */
129 	extern int GetNoActiveState(int ResetFlag = dxlib_d.DxDataType.TRUE);
130 
131 	/**
132 	 * マウスポインタを表示するかどうかの設定を取得する
133 	 *
134 	 * Returns: dxlib_d.DxDataType.TRUE:表示する  dxlib_d.DxDataType.FALSE:表示しない
135 	 */
136 	extern int GetMouseDispFlag();
137 
138 	/**
139 	 * メインウインドウが非アクティブになっても処理を実行し続けるかどうかの設定を取得する
140 	 *
141 	 * Returns: dxlib_d.DxDataType.TRUE:実行する  dxlib_d.DxDataType.FALSE:停止する
142 	 */
143 	extern int GetAlwaysRunFlag();
144 
145 	/**
146 	 * DXライブラリとDirectXのバージョンとWindowsのバージョン番号を取得する
147 	 */
148 	extern int _GetSystemInfo(int* DxLibVer, int* DirectXVer, int* WindowsVer);
149 
150 	/**
151 	 * PCの情報を取得する
152 	 */
153 	extern int GetPcInfo(dxlib_d.DxDataType.TCHAR* OSString, dxlib_d.DxDataType.TCHAR* DirectXString, dxlib_d.DxDataType.TCHAR* CPUString, int* CPUSpeed /* 単位MHz */, double* FreeMemorySize /* 単位MByte */, double* TotalMemorySize, dxlib_d.DxDataType.TCHAR* VideoDriverFileName, dxlib_d.DxDataType.TCHAR* VideoDriverString, double* FreeVideoMemorySize /* 単位MByte */, double* TotalVideoMemorySize);
154 
155 	/**
156 	 * MMXが使えるかどうかの情報を得る
157 	 */
158 	extern int GetUseMMXFlag();
159 
160 	/**
161 	 * SSEが使えるかどうかの情報を得る
162 	 */
163 	extern int GetUseSSEFlag();
164 
165 	/**
166 	 * SSE2が使えるかどうかの情報を得る
167 	 */
168 	extern int GetUseSSE2Flag();
169 
170 	/**
171 	 * ウインドウを閉じようとしているかの情報を得る
172 	 */
173 	extern int GetWindowCloseFlag();
174 
175 	/**
176 	 * ソフトのインスタンスを取得する
177 	 */
178 	extern dxlib_d.DxDataType.HINSTANCE GetTaskInstance();
179 
180 	/**
181 	 * リージョンを使っているかどうかを取得する
182 	 */
183 	extern int GetUseWindowRgnFlag();
184 
185 	/**
186 	 * ウインドウのサイズを変更できる設定になっているかどうかを取得する
187 	 *
188 	 * Returns: dxlib_d.DxDataType.TRUE:変更できるようになっている  dxlib_d.DxDataType.FALSE:変更できないようになっている
189 	 */
190 	extern int GetWindowSizeChangeEnableFlag(int* FitScreen = null);
191 
192 	/**
193 	 * 描画画面のサイズに対するウインドウサイズの比率を取得する
194 	 *
195 	 * Returns: ExRateXに代入される値と同じ
196 	 */
197 	extern double GetWindowSizeExtendRate(double* ExRateX = null, double* ExRateY = null);
198 
199 	/**
200 	 * メインウインドウのクライアント領域のサイズを取得する
201 	 */
202 	extern int GetWindowSize(int* Width, int* Height);
203 
204 	/**
205 	 * ウインドウの上下左右の縁の幅を取得する
206 	 */
207 	extern int GetWindowEdgeWidth(int* LeftWidth, int* RightWidth, int* TopWidth, int* BottomWidth);
208 
209 	/**
210 	 * メインウインドウのデスクトップ上の左上端座標を取得する(枠も含める)
211 	 */
212 	extern int GetWindowPosition(int* x, int* y);
213 
214 	/**
215 	 * メインウインドウの閉じるボタンが押されたかどうかを取得する
216 	 */
217 	extern int GetWindowUserCloseFlag(int StateResetFlag = dxlib_d.DxDataType.FALSE);
218 
219 	/**
220 	 * メインウインドウの最大化ボタンが押されたかどうかを取得する、SetWindowMaximizeButtonBehavior(1);が実行されている場合のみ有効な関数
221 	 *
222 	 * Params:
223 	 *      StateResetFlag = dxlib_d.DxDataType.TRUE:押された状態をリセットする   dxlib_d.DxDataType.FALSE:押された状態をリセットしない
224 	 */
225 	extern int CheckWindowMaximizeButtonInput(int StateResetFlag = dxlib_d.DxDataType.TRUE);
226 
227 	/**
228 	 * DXライブラリの描画機能を使うかどうかの設定を取得する
229 	 */
230 	extern int GetNotDrawFlag();
231 
232 	/**
233 	 * WM_PAINT メッセージが来たかどうかを取得する
234 	 *
235 	 * Returns: dxlib_d.DxDataType.TRUE:WM_PAINTメッセージが来た(一度取得すると以後、再び WM_PAINTメッセージが来るまでdxlib_d.DxDataType.FALSEが返ってくるようになる)  dxlib_d.DxDataType.FALSE:WM_PAINT メッセージは来ていない
236 	 */
237 	extern int GetPaintMessageFlag();
238 
239 	/**
240 	 * パフォーマンスカウンタが有効かどうかを取得する
241 	 *
242 	 * Returns: dxlib_d.DxDataType.TRUE:有効  dxlib_d.DxDataType.FALSE:無効
243 	 */
244 	extern int GetValidHiPerformanceCounter();
245 
246 	/**
247 	 * 入力されたシステム文字を取得する
248 	 */
249 	extern dxlib_d.DxDataType.TCHAR GetInputSystemChar(int DeleteFlag);
250 
251 	// 設定系関数
252 
253 	/**
254 	 * ウインドウモードを変更する
255 	 */
256 	extern int ChangeWindowMode(int Flag);
257 
258 	/**
259 	 * DXライブラリの文字列処理で前提とする文字列セットを設定する
260 	 */
261 	extern int SetUseCharSet(int CharSet /* = DX_CHARSET_SHFTJIS等 */);
262 
263 	/**
264 	 * アクティブウインドウが他のソフトに移っている際に表示する画像をファイルから読み込む(FileNameにnullを渡すことで解除)
265 	 */
266 	extern int LoadPauseGraph(const (dxlib_d.DxDataType.TCHAR)* FileName);
267 
268 	/**
269 	 * アクティブウインドウが他のソフトに移っている際に表示する画像をファイルから読み込む(FileNameにnullを渡すことで解除)
270 	 */
271 	extern int LoadPauseGraphWithStrLen(const (dxlib_d.DxDataType.TCHAR)* FileName, size_t FileNameLength);
272 
273 	/**
274 	 * アクティブウインドウが他のソフトに移っている際に表示する画像をメモリから読み込む
275 	 *
276 	 * Params:
277 	 *      MemImage = ファイルイメージの先頭アドレス,nullにすることで設定解除
278 	 *      MemImageSize = ファイルイメージのサイズ(単位:Byte)
279 	 */
280 	extern int LoadPauseGraphFromMem(const (void)* MemImage, int MemImageSize);
281 
282 	/**
283 	 * メインウインドウのアクティブ状態に変化があったときに呼ばれるコールバック関数を設定する
284 	 *
285 	 * Params:
286 	 *      CallBackFunction = 呼ばれるコールバック関数、nullを渡すと設定解除
287 	 *      UserData = CallBackFunctionの第2引数に渡される値
288 	 */
289 	extern int SetActiveStateChangeCallBackFunction(int function(int ActiveState, void* UserData) CallBackFunction, void* UserData);
290 
291 	/**
292 	 * メインウインドウのウインドウテキストを変更する
293 	 */
294 	extern int SetWindowText(const (dxlib_d.DxDataType.TCHAR)* WindowText);
295 
296 	/**
297 	 * メインウインドウのウインドウテキストを変更する
298 	 */
299 	extern int SetWindowTextWithStrLen(const (dxlib_d.DxDataType.TCHAR)* WindowText, size_t WindowTextLength);
300 
301 	/**
302 	 * SetWindowTextの別名関数
303 	 */
304 	extern int SetMainWindowText(const (dxlib_d.DxDataType.TCHAR)* WindowText);
305 
306 	/**
307 	 * SetWindowTextの別名関数
308 	 */
309 	extern int SetMainWindowTextWithStrLen(const (dxlib_d.DxDataType.TCHAR)* WindowText, size_t WindowTextLength);
310 
311 	/**
312 	 * メインウインドウのクラス名を設定する(DxLib_Initの前でのみ使用可能)
313 	 */
314 	extern int SetMainWindowClassName(const (dxlib_d.DxDataType.TCHAR)* ClassName);
315 
316 	/**
317 	 * メインウインドウのクラス名を設定する(DxLib_Initの前でのみ使用可能)
318 	 */
319 	extern int SetMainWindowClassNameWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ClassName, size_t ClassNameLength);
320 
321 	/**
322 	 * メインウインドウで使用するアイコンのIDをセットする
323 	 */
324 	extern int SetWindowIconID(int ID);
325 
326 	/**
327 	 * メインウインドウで使用するアイコンのハンドルをセットする
328 	 */
329 	extern int SetWindowIconHandle(dxlib_d.DxDataTypeWin.HICON Icon);
330 
331 	/**
332 	 * 最大化ボタンやALT+ENTERキーによる非同期なウインドウモードの変更の機能の設定を行う
333 	 *
334 	 * Params:
335 	 *      Flag = 非同期ウインドウモード変更を有効にするかどうかのフラグ(dxlib_d.DxDataType.TRUE:有効にする  dxlib_d.DxDataType.FALSE:無効にする(デフォルト))
336 	 *      CallBackFunction = 非同期ウインドウモード変更が行われた場合に呼ばれるコールバック関数のアドレス
337 	 *      Data = CallBackFunctionの引数に渡されるvoid型のポインタ
338 	 */
339 	extern int SetUseASyncChangeWindowModeFunction(int Flag, void function(void*) CallBackFunction, void* Data);
340 
341 	/**
342 	 * シャットダウンによるソフトの強制終了の際に呼ばれるコールバック関数を登録する(Messageはコールバック関数の終了を待つ間表示されるメッセージ)
343 	 */
344 	extern int SetShutdownCallbackFunction(void function(void*) *CallbackFunction, void* Data, const (dxlib_d.DxDataType.TCHAR)* Message);
345 
346 	/**
347 	 * メインウインドウのスタイルを変更する
348 	 */
349 	extern int SetWindowStyleMode(int Mode);
350 
351 	/**
352 	 * メインウインドウの奥行き位置を変更する
353 	 */
354 	extern int SetWindowZOrder(int ZType /* = DX_WIN_ZTYPE_TOP等 */, int WindowActivateFlag = dxlib_d.DxDataType.TRUE);
355 
356 	/**
357 	 * メインウインドウの端を掴んでウインドウのサイズを変更できるようにするかどうかの設定を行う
358 	 *
359 	 * Params:
360 	 *      Flag = 変更を可能にするかどうか(dxlib_d.DxDataType.TRUE:可能にする  dxlib_d.DxDataType.FALSE:不可能にする(デフォルト))
361 	 *      FitScreen = ウインドウのクライアント領域に画面をフィットさせる(拡大させる)かどうか  dxlib_d.DxDataType.TRUE:フィットさせる  dxlib_d.DxDataType.FALSE:フィットさせない
362 	 */
363 	extern int SetWindowSizeChangeEnableFlag(int Flag, int FitScreen = dxlib_d.DxDataType.TRUE);
364 
365 	/**
366 	 * 描画画面のサイズに対するメインウインドウサイズの比率を設定する(ExRateYがマイナスの場合はExRateXの値がExRateYにも使用されます)
367 	 */
368 	extern int SetWindowSizeExtendRate(double ExRateX, double ExRateY = -1.0);
369 
370 	/**
371 	 * メインウインドウのクライアント領域のサイズを設定する
372 	 */
373 	extern int SetWindowSize(int Width, int Height);
374 
375 	/**
376 	 * メインウインドウのクライアント領域の最大サイズを設定する(SetWindowSizeChangeEnableFlagの第一引数をdxlib_d.DxDataType.TRUEで呼び出して、ウインドウのサイズが変更できる状態でのみ使用されるパラメータです)
377 	 */
378 	extern int SetWindowMaxSize(int MaxWidth, int MaxHeight);
379 
380 	/**
381 	 * メインウインドウのクライアント領域の最小サイズを設定する(SetWindowSizeChangeEnableFlagの第一引数をdxlib_d.DxDataType.TRUEで呼び出して、ウインドウのサイズが変更できる状態でのみ使用されるパラメータです)
382 	 */
383 	extern int SetWindowMinSize(int MinWidth, int MinHeight);
384 
385 	/**
386 	 * メインウインドウの位置を設定する(枠も含めた左上座標)
387 	 */
388 	extern int SetWindowPosition(int x, int y);
389 
390 	/**
391 	 * タスクスイッチを有効にするかどうかを設定する
392 	 */
393 	extern int SetSysCommandOffFlag(int Flag, const (dxlib_d.DxDataType.TCHAR)* HookDllPath = null);
394 
395 	/**
396 	 * タスクスイッチを有効にするかどうかを設定する
397 	 */
398 	extern int SetSysCommandOffFlagWithStrLen(int Flag, const (dxlib_d.DxDataType.TCHAR)* HookDllPath = null, size_t HookDllPathLength = 0);
399 
400 	/**
401 	 * メインウインドウの最大化ボタンが押されたときの挙動を設定する(BehaviorType 0:標準動作 1:標準動作は行わず、最大化ボタンが押されたかどうかはCheckWindowMaximizeButtonInputで判定する)
402 	 */
403 	extern int SetWindowMaximizeButtonBehavior(int BehaviorType);
404 
405 	/**
406 	 * メインウインドウへのメッセージをフックするウインドウプロージャを登録する
407 	 */
408 	extern int SetHookWinProc(dxlib_d.DxDataTypeWin.WNDPROC WinProc);
409 
410 	/**
411 	 * SetHookWinProcで設定したウインドウプロージャの戻り値を使用するかどうかを設定する、SetHookWinProcで設定したウインドウプロージャの中でのみ使用可能
412 	 *
413 	 * Params:
414 	 *      UseFlag = dxlib_d.DxDataType.TRUE:戻り値を使用して、DXライブラリのウインドウプロージャの処理は行わない  dxlib_d.DxDataType.FALSE:戻り値は使用せず、ウインドウプロージャから出た後、DXライブラリのウインドウプロージャの処理を行う
415 	 */
416 	extern int SetUseHookWinProcReturnValue(int UseFlag);
417 
418 	/**
419 	 * DXライブラリを使用したソフトの二重起動を可能にするかどうかの設定を行う
420 	 *
421 	 * Params:
422 	 *      Flag = dxlib_d.DxDataType.TRUE:可能にする  dxlib_d.DxDataType.FALSE:不可能にする(デフォルト)
423 	 */
424 	extern int SetDoubleStartValidFlag(int Flag);
425 
426 	/**
427 	 * DXライブラリを使用したソフトが既に起動しているかどうかを取得する
428 	 *
429 	 * Returns: dxlib_d.DxDataType.TRUE:既に起動している  dxlib_d.DxDataType.FALSE:起動していない
430 	 */
431 	extern int CheckDoubleStart();
432 
433 	/**
434 	 * メッセージ処理をDXライブラリに肩代わりしてもらうウインドウを追加する
435 	 */
436 	extern int AddMessageTakeOverWindow(dxlib_d.DxDataTypeWin.HWND Window);
437 
438 	/**
439 	 * メッセージ処理をDXライブラリに肩代わりしてもらうウインドウを減らす
440 	 */
441 	extern int SubMessageTakeOverWindow(dxlib_d.DxDataTypeWin.HWND Window);
442 
443 	/**
444 	 * メインウインドウの初期位置を設定する
445 	 */
446 	extern int SetWindowInitPosition(int x, int y);
447 
448 	/**
449 	 * DXライブラリのウインドウ関連の機能を使用しないかどうかを設定する
450 	 *
451 	 * Params:
452 	 *      Flag = dxlib_d.DxDataType.TRUE:使用しない  dxlib_d.DxDataType.FALSE:使用する(デフォルト)
453 	 */
454 	extern int SetNotWinFlag(int Flag);
455 
456 	/**
457 	 * DXライブラリの描画機能を使うかどうかを設定する
458 	 *
459 	 * Params:
460 	 *      Flag = dxlib_d.DxDataType.TRUE:使用しない  dxlib_d.DxDataType.FALSE:使用する(デフォルト)
461 	 */
462 	extern int SetNotDrawFlag(int Flag);
463 
464 	/**
465 	 * DXライブラリのサウンド機能を使うかどうかを設定する
466 	 *
467 	 * Params:
468 	 *      Flag = dxlib_d.DxDataType.TRUE:使用しない  dxlib_d.DxDataType.FALSE:使用する(デフォルト)
469 	 */
470 	extern int SetNotSoundFlag(int Flag);
471 
472 	/**
473 	 * DXライブラリの入力状態の取得機能を使うかどうかを設定する
474 	 *
475 	 * Params:
476 	 *      Flag = dxlib_d.DxDataType.TRUE:使用しない  dxlib_d.DxDataType.FALSE:使用する(デフォルト)
477 	 */
478 	extern int SetNotInputFlag(int Flag);
479 
480 	/**
481 	 * DXライブラリでメッセージ処理を行うダイアログボックスを登録する
482 	 */
483 	extern int SetDialogBoxHandle(dxlib_d.DxDataTypeWin.HWND WindowHandle);
484 
485 	/**
486 	 * メインウインドウを表示するかどうかを設定する
487 	 *
488 	 * Params:
489 	 *      Flag = dxlib_d.DxDataType.TRUE:表示する  dxlib_d.DxDataType.FALSE:表示しない
490 	 */
491 	extern int SetWindowVisibleFlag(int Flag);
492 
493 	/**
494 	 * メインウインドウを最小化するかどうかを設定する
495 	 *
496 	 * Params:
497 	 *      Flag = dxlib_d.DxDataType.TRUE:最小化する  dxlib_d.DxDataType.FALSE:最小化を解除
498 	 */
499 	extern int SetWindowMinimizeFlag(int Flag);
500 
501 	/**
502 	 * メインウインドウの×ボタンを押した時にDXライブラリが自動的にウインドウを閉じるかどうかを設定する
503 	 *
504 	 * Params:
505 	 *      Flag = dxlib_d.DxDataType.TRUE:自動的に閉じる(デフォルト)  dxlib_d.DxDataType.FALSE:閉じない
506 	 */
507 	extern int SetWindowUserCloseEnableFlag(int Flag);
508 
509 	/**
510 	 * DXライブラリ終了時にPostQuitMessageを呼ぶかどうかを設定する
511 	 *
512 	 * Params:
513 	 *      Flag = dxlib_d.DxDataType.TRUE:PostQuitMessageを呼ぶ(デフォルト)  dxlib_d.DxDataType.FALSE:呼ばない
514 	 */
515 	extern int SetDxLibEndPostQuitMessageFlag(int Flag);
516 
517 	/**
518 	 * DXライブラリで使用するウインドウのハンドルをセットする(DxLib_Initを実行する以前でのみ有効)
519 	 */
520 	extern int SetUserWindow(dxlib_d.DxDataTypeWin.HWND WindowHandle);
521 
522 	/**
523 	 * DXライブラリで使用する表示用の子ウインドウのハンドルをセットする(DxLib_Initを実行する以前でのみ有効)
524 	 */
525 	extern int SetUserChildWindow(dxlib_d.DxDataTypeWin.HWND WindowHandle);
526 
527 	/**
528 	 * SetUseWindowで設定したウインドウのメッセージループ処理をDXライブラリで行うかどうかを設定する
529 	 *
530 	 * Params:
531 	 *      Flag = dxlib_d.DxDataType.TRUE:DXライブラリで行う(デフォルト)  dxlib_d.DxDataType.FALSE:DXライブラリでは行わない
532 	 */
533 	extern int SetUserWindowMessageProcessDXLibFlag(int Flag);
534 
535 	/**
536 	 * FPUの精度を落とさない設定を使用するかどうかを設定する、DxLib_Initを呼び出す前のみ有効
537 	 *
538 	 * Params:
539 	 *      Flag = dxlib_d.DxDataType.TRUE:使用する(精度が落ちない)  dxlib_d.DxDataType.FALSE:使用しない(精度を落とす(デフォルト)
540 	 */
541 	extern int SetUseFPUPreserveFlag(int Flag);
542 
543 	/**
544 	 * マウスポインタがウインドウのクライアントエリアの外にいけるかどうかを設定する
545 	 *
546 	 * Params:
547 	 *      Flag = dxlib_d.DxDataType.TRUE:いける(デフォルト設定)  dxlib_d.DxDataType.FALSE:いけない
548 	 */
549 	extern int SetValidMousePointerWindowOutClientAreaMoveFlag(int Flag);
550 
551 	/**
552 	 * バックバッファの透過色の部分を透過させるかどうかを設定する
553 	 *
554 	 * Params:
555 	 *      Flag = dxlib_d.DxDataType.TRUE:透過させる  dxlib_d.DxDataType.FALSE:透過させない(デフォルト)
556 	 */
557 	extern int SetUseBackBufferTransColorFlag(int Flag);
558 
559 	/**
560 	 * UpdateLayerdWindowForBaseImageやUpdateLayerdWindowForSoftImageを使用するかどうかを設定する
561 	 *
562 	 * Params:
563 	 *      Flag = dxlib_d.DxDataType.TRUE:使用する  dxlib_d.DxDataType.FALSE:使用しない
564 	 */
565 	extern int SetUseUpdateLayerdWindowFlag(int Flag);
566 
567 	/**
568 	 * リソースを読み込む際に使用するモジュールを設定する(nullを指定すると初期状態に戻ります、デフォルトではnull)
569 	 *
570 	 * Params:
571 	 *      ResourceModule = ?
572 	 */
573 	extern int SetResourceModule(dxlib_d.DxDataTypeWin.HMODULE ResourceModule);
574 
575 	/**
576 	 * WM_PAINT メッセージが来た際に『DXライブラリのWM_PAINTメッセージが来た際の処理』を行うかどうかを設定する(別スレッドで描画処理を行う場合などで使用)
577 	 */
578 	extern int SetUseDxLibWM_PAINTProcess(int Flag);
579 
580 	/**
581 	 * Windows10でWM_CHARで短時間に連続して同じ文字が入力された場合の無効扱いにする時間を設定する(MilliSecondのミリ秒以内に連続して同じ文字が入力された場合に無効にする、MilliSecondの値をマイナスにするとデフォルトの設定に戻る)
582 	 */
583 	extern int SetWindows10_WM_CHAR_CancelTime(int MilliSecond);
584 
585 	// ドラッグ&ドロップされたファイル関係
586 
587 	/**
588 	 * ファイルのメインウインドウへのドラッグ&ドロップ機能を有効にするかどうかのフラグをセットする
589 	 */
590 	extern int SetDragFileValidFlag(int Flag);
591 
592 	/**
593 	 * メインウインドウへドラッグ&ドロップされたファイルの情報をリセットする
594 	 */
595 	extern int DragFileInfoClear();
596 
597 	/**
598 	 * メインウインドウへドラッグ&ドロップされたファイル名を取得する
599 	 *
600 	 * Params:
601 	 *      FilePathBuffer = ファイル名を格納するバッファの先頭アドレス
602 	 *
603 	 * Returns: -1:取得できなかった  0:取得できた
604 	 */
605 	extern int GetDragFilePath(dxlib_d.DxDataType.TCHAR* FilePathBuffer);
606 
607 	/**
608 	 * メインウインドウへドラッグ&ドロップされたファイルの数を取得する
609 	 */
610 	extern int GetDragFileNum();
611 
612 	// ウインドウ描画領域設定系関数
613 
614 	/**
615 	 * 任意の画像イメージからRGNハンドルを作成する
616 	 *
617 	 * Params:
618 	 *      Width = 横ドット数
619 	 *      Height = 縦ドット数
620 	 *      MaskData = ドット情報配列の先頭アドレス
621 	 *      Pitch = 1ラインあたりのbyteサイズ
622 	 *      Byte = 1ドット辺りのbyteサイズ(対応しているのは1~4)、ドットの数値が0かそれ以外かで判別
623 	 */
624 	extern dxlib_d.DxDataTypeWin.HRGN CreateRgnFromGraph(int Width, int Height, const (void)* MaskData, int Pitch, int Byte);
625 
626 	/**
627 	 * 任意の基本イメージデータと透過色からRGNハンドルを作成する
628 	 *
629 	 * Params:
630 	 *      BaseImage = 基本イメージデータのアドレス
631 	 *      TransColorR = 透過色(0~255)
632 	 *      TransColorG = 透過色(0~255)
633 	 *      TransColorB = 透過色(0~255)
634 	 */
635 	extern dxlib_d.DxDataTypeWin.HRGN CreateRgnFromBaseImage(dxlib_d.DxLib.BASEIMAGE* BaseImage, int TransColorR, int TransColorG, int TransColorB);
636 
637 	/**
638 	 * 任意の画像ファイルからRGNをセットする
639 	 */
640 	extern int SetWindowRgnGraph(const (dxlib_d.DxDataType.TCHAR)* FileName);
641 
642 	/**
643 	 * 任意の画像ファイルからRGNをセットする
644 	 */
645 	extern int SetWindowRgnGraphWithStrLen(const (dxlib_d.DxDataType.TCHAR)* FileName, size_t FileNameLength);
646 
647 	/**
648 	 * 描画先の画面の透過色の部分を透過させるRGNをセットする(使用される透過色は関数SetTransColorで設定した色)
649 	 */
650 	extern int UpdateTransColorWindowRgn();
651 
652 	// ツールバー関係
653 
654 	/**
655 	 * ツールバーの準備、BitmapNameにnull, ResourceIDに-1を渡すとツールバーを解除
656 	 *
657 	 * Params:
658 	 *      BitmapName = ツールバーのボタンに使用する画像ファイルパス、ResourceIDに-1以外を渡す場合はnullにする
659 	 *      DivNum = ボタン画像中のボタンの数
660 	 *      ResourceID = ツールバーのボタンに使用するビットマップリソースのID、BitmapNameにnullを渡すとこの引数が使用される
661 	 */
662 	extern int SetupToolBar(const (dxlib_d.DxDataType.TCHAR)* BitmapName, int DivNum, int ResourceID = -1);
663 
664 	/**
665 	 * ツールバーの準備、BitmapNameにnull, ResourceIDに-1を渡すとツールバーを解除
666 	 *
667 	 * Params:
668 	 *      BitmapName = ツールバーのボタンに使用する画像ファイルパス、ResourceIDに-1以外を渡す場合はnullにする
669 	 *      BitmapNameLength = ?
670 	 *      DivNum = ボタン画像中のボタンの数
671 	 *      ResourceID = ツールバーのボタンに使用するビットマップリソースのID、BitmapNameにnullを渡すとこの引数が使用される
672 	 */
673 	extern int SetupToolBarWithStrLen(const (dxlib_d.DxDataType.TCHAR)* BitmapName, size_t BitmapNameLength, int DivNum, int ResourceID = -1);
674 
675 	/**
676 	 * ツールバーにボタンを追加する
677 	 *
678 	 * Params:
679 	 *      Type = ボタンタイプ(TOOLBUTTON_TYPE_NORMAL等(解説は#defineの定義を参照してください))
680 	 *      State = 初期状態(TOOLBUTTON_STATE_ENABLE等(解説は#defineの定義を参照してください))
681 	 *      ImageIndex = 使用するボタンの画像番号
682 	 *      ID = ボタンに割り当てる識別番号
683 	 */
684 	extern int AddToolBarButton(int Type /* TOOLBUTTON_TYPE_NORMAL等 */, int State /* TOOLBUTTON_STATE_ENABLE等 */, int ImageIndex, int ID);
685 
686 	/**
687 	 * ツールバーに隙間を追加する
688 	 */
689 	extern int AddToolBarSep();
690 
691 	/**
692 	 * ツールバーのボタンの状態を取得する
693 	 *
694 	 * Params:
695 	 *      ID = AddToolBarButtonで設定したボタンの識別番号
696 	 *
697 	 * Returns: dxlib_d.DxDataType.TRUE:押されているor押された  dxlib_d.DxDataType.FALSE:押されていない
698 	 */
699 	extern int GetToolBarButtonState(int ID);
700 
701 	/**
702 	 * ツールバーのボタンの状態を設定する
703 	 *
704 	 * Params:
705 	 *      ID = AddToolBarButtonで設定したボタンの識別番号
706 	 *      State = 設定する状態(TOOLBUTTON_STATE_ENABLE等(解説は#defineの定義を参照してください))
707 	 */
708 	extern int SetToolBarButtonState(int ID, int State /* TOOLBUTTON_STATE_ENABLE等 */);
709 
710 	/**
711 	 * ツールバーのボタンを全て削除する
712 	 */
713 	extern int DeleteAllToolBarButton();
714 
715 	// メニュー関係
716 
717 	/**
718 	 * メニューを有効にするかどうかを設定する
719 	 *
720 	 * Params:
721 	 *      Flag = dxlib_d.DxDataType.TRUE:使用する  dxlib_d.DxDataType.FALSE:使用しない
722 	 */
723 	extern int SetUseMenuFlag(int Flag);
724 
725 	/**
726 	 * キーボードアクセラレーターを使用するかどうかを設定する
727 	 *
728 	 * Params:
729 	 *      Flag = dxlib_d.DxDataType.TRUE:使用する  dxlib_d.DxDataType.FALSE:使用しない
730 	 */
731 	extern int SetUseKeyAccelFlag(int Flag);
732 
733 	/**
734 	 * ショートカットキーを追加する
735 	 *
736 	 * Params:
737 	 *      ItemName = ショートカットキーを割り当てるメニューのアイテム名(AddMenuItemでNewItemNameに渡した名前)、ItemIDを使用する場合はnullを渡す
738 	 *      ItemID = メニュー項目の識別番号(AddMenuItemの引数 NewItemIDで指定したもの)、ItemNameを使用する場合は-1を渡す
739 	 *      KeyCode = ショートカットキーのキー(KEY_INPUT_L等)
740 	 *      CtrlFlag = 同時にCTRLキーを押す必要があるようにするかどうか(dxlib_d.DxDataType.TRUE:押す必要がある  dxlib_d.DxDataType.FALSE:押さなくても良い)
741 	 *      AltFlag = 同時にALTキーを押す必要があるようにするかどうか(dxlib_d.DxDataType.TRUE:押す必要がある  dxlib_d.DxDataType.FALSE:押さなくても良い)
742 	 *      ShiftFlag = 同時にSHIFTキーを押す必要があるようにするかどうか(dxlib_d.DxDataType.TRUE:押す必要がある  dxlib_d.DxDataType.FALSE:押さなくても良い)
743 	 */
744 	extern int AddKeyAccel(const (dxlib_d.DxDataType.TCHAR)* ItemName, int ItemID, int KeyCode, int CtrlFlag, int AltFlag, int ShiftFlag);
745 
746 	/**
747 	 * ショートカットキーを追加する
748 	 *
749 	 * Params:
750 	 *      ItemName = ショートカットキーを割り当てるメニューのアイテム名(AddMenuItemでNewItemNameに渡した名前)、ItemIDを使用する場合はnullを渡す
751 	 *      ItemNameLength = ?
752 	 *      ItemID = メニュー項目の識別番号(AddMenuItemの引数 NewItemIDで指定したもの)、ItemNameを使用する場合は-1を渡す
753 	 *      KeyCode = ショートカットキーのキー(KEY_INPUT_L等)
754 	 *      CtrlFlag = 同時にCTRLキーを押す必要があるようにするかどうか(dxlib_d.DxDataType.TRUE:押す必要がある  dxlib_d.DxDataType.FALSE:押さなくても良い)
755 	 *      AltFlag = 同時にALTキーを押す必要があるようにするかどうか(dxlib_d.DxDataType.TRUE:押す必要がある  dxlib_d.DxDataType.FALSE:押さなくても良い)
756 	 *      ShiftFlag = 同時にSHIFTキーを押す必要があるようにするかどうか(dxlib_d.DxDataType.TRUE:押す必要がある  dxlib_d.DxDataType.FALSE:押さなくても良い)
757 	 */
758 	extern int AddKeyAccelWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength, int ItemID, int KeyCode, int CtrlFlag, int AltFlag, int ShiftFlag);
759 
760 	/**
761 	 * ショートカットキーを追加する(各引数の解説はAddKeyAccelと同じ、ItemIDが無くなっただけ)
762 	 */
763 	extern int AddKeyAccel_Name(const (dxlib_d.DxDataType.TCHAR)* ItemName, int KeyCode, int CtrlFlag, int AltFlag, int ShiftFlag);
764 
765 	/**
766 	 * ショートカットキーを追加する(各引数の解説はAddKeyAccelと同じ、ItemIDが無くなっただけ)
767 	 */
768 	extern int AddKeyAccel_NameWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength, int KeyCode, int CtrlFlag, int AltFlag, int ShiftFlag);
769 
770 	/**
771 	 * ショートカットキーを追加する(各引数の解説はAddKeyAccelと同じ、ItemNameが無くなっただけ)
772 	 */
773 	extern int AddKeyAccel_ID(int ItemID, int KeyCode, int CtrlFlag, int AltFlag, int ShiftFlag);
774 
775 	/**
776 	 * ショートカットキーの情報をリセットする
777 	 */
778 	extern int ClearKeyAccel();
779 
780 	/**
781 	 * メニューに項目を追加する
782 	 *
783 	 * Params:
784 	 *      AddType = 項目タイプ(MENUITEM_ADD_CHILD等(解説は#defineの定義を参照してください))
785 	 *      ItemName = AddTypeがMENUITEM_ADD_CHILDの場合は親となる項目の名前、MENUITEM_ADD_INSERTの場合は挿入位置となる項目の名前、nullを指定するとItemIDが使用される
786 	 *      ItemID = ItemNameの代わりに識別番号で指定するもの、AddType毎の違いはItemNameの解説の通り、-1を指定するとItemNameが使用される
787 	 *      SeparatorFlag = 区切り線を追加するかどうか(dxlib_d.DxDataType.TRUE:区切り線を追加、この場合NewItemNameとNewItemIDは無視される  dxlib_d.DxDataType.FALSE:追加するのは区切り線ではない)
788 	 *      NewItemName = 新しい項目の名前
789 	 *      NewItemID = 新しい項目の識別番号、-1を指定すると内部で適当な番号が割り当てられる
790 	 */
791 	extern int AddMenuItem(int AddType /* MENUITEM_ADD_CHILD等 */, const (dxlib_d.DxDataType.TCHAR)* ItemName, int ItemID, int SeparatorFlag, const (dxlib_d.DxDataType.TCHAR)* NewItemName = null, int NewItemID = -1);
792 
793 	/**
794 	 * メニューに項目を追加する
795 	 *
796 	 * Params:
797 	 *      AddType = 項目タイプ(MENUITEM_ADD_CHILD等(解説は#defineの定義を参照してください))
798 	 *      ItemName = AddTypeがMENUITEM_ADD_CHILDの場合は親となる項目の名前、MENUITEM_ADD_INSERTの場合は挿入位置となる項目の名前、nullを指定するとItemIDが使用される
799 	 *      ItemNameLength = ?
800 	 *      ItemID = ItemNameの代わりに識別番号で指定するもの、AddType毎の違いはItemNameの解説の通り、-1を指定するとItemNameが使用される
801 	 *      SeparatorFlag = 区切り線を追加するかどうか(dxlib_d.DxDataType.TRUE:区切り線を追加、この場合NewItemNameとNewItemIDは無視される  dxlib_d.DxDataType.FALSE:追加するのは区切り線ではない)
802 	 *      NewItemName = 新しい項目の名前
803 	 *      NewItemNameLength = ?
804 	 *      NewItemID = 新しい項目の識別番号、-1を指定すると内部で適当な番号が割り当てられる
805 	 */
806 	extern int AddMenuItemWithStrLen(int AddType /* MENUITEM_ADD_CHILD等 */, const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength, int ItemID, int SeparatorFlag, const (dxlib_d.DxDataType.TCHAR)* NewItemName = null, size_t NewItemNameLength = 0, int NewItemID = -1);
807 
808 	/**
809 	 * メニューから選択項目を削除する
810 	 *
811 	 * Params:
812 	 *      ItemName = 削除する項目の名前(AddMenuItemでNewItemNameに渡した名前)、nullを指定するとItemIDが使用される
813 	 *      ItemID = 削除する項目の識別番号(AddMenuItemでNewItemIDに渡した番号)、-1を指定するとItemNameが使用される
814 	 */
815 	extern int DeleteMenuItem(const (dxlib_d.DxDataType.TCHAR)* ItemName, int ItemID);
816 
817 	/**
818 	 * メニューから選択項目を削除する
819 	 *
820 	 * Params:
821 	 *      ItemName = 削除する項目の名前(AddMenuItemでNewItemNameに渡した名前)、nullを指定するとItemIDが使用される
822 	 *      ItemNameLength = ?
823 	 *      ItemID = 削除する項目の識別番号(AddMenuItemでNewItemIDに渡した番号)、-1を指定するとItemNameが使用される
824 	 */
825 	extern int DeleteMenuItemWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength, int ItemID);
826 
827 	/**
828 	 * メニューが選択されたかどうかを取得する(ItemNameとItemIDについては関数DeleteMenuItemの注釈を参照してください)
829 	 *
830 	 * Returns: 0:選択されていない  1:選択された
831 	 */
832 	extern int CheckMenuItemSelect(const (dxlib_d.DxDataType.TCHAR)* ItemName, int ItemID);
833 
834 	/**
835 	 * メニューが選択されたかどうかを取得する(ItemNameとItemIDについては関数DeleteMenuItemの注釈を参照してください)
836 	 *
837 	 * Returns: 0:選択されていない  1:選択された
838 	 */
839 	extern int CheckMenuItemSelectWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength, int ItemID);
840 
841 	/**
842 	 * メニューの項目を選択出来るかどうかを設定する(ItemNameとItemIDについては関数DeleteMenuItemの注釈を参照してください)
843 	 *
844 	 * Params:
845 	 *      ItemName = ?
846 	 *      ItemID = ?
847 	 *      EnableFlag = 項目が選択できるかどうか(dxlib_d.DxDataType.TRUE:選択できる   dxlib_d.DxDataType.FALSE:選択できない)
848 	 */
849 	extern int SetMenuItemEnable(const (dxlib_d.DxDataType.TCHAR)* ItemName, int ItemID, int EnableFlag);
850 
851 	/**
852 	 * メニューの項目を選択出来るかどうかを設定する(ItemNameとItemIDについては関数DeleteMenuItemの注釈を参照してください)
853 	 *
854 	 * Params:
855 	 *      ItemName = ?
856 	 *      ItemNameLength = ?
857 	 *      ItemID = ?
858 	 *      EnableFlag = 項目が選択できるかどうか(dxlib_d.DxDataType.TRUE:選択できる   dxlib_d.DxDataType.FALSE:選択できない)
859 	 */
860 	extern int SetMenuItemEnableWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength, int ItemID, int EnableFlag);
861 
862 	/**
863 	 * メニューの項目にチェックマークやラジオボタンを表示するかどうかを設定する(ItemNameとItemIDについては関数DeleteMenuItemの注釈を参照してください))
864 	 *
865 	 * Params:
866 	 *      ItemName = ?
867 	 *      ItemID = ?
868 	 *      Mark = 設定するマーク(MENUITEM_MARK_NONE等(解説は#defineの定義を参照してください)
869 	 */
870 	extern int SetMenuItemMark(const (dxlib_d.DxDataType.TCHAR)* ItemName, int ItemID, int Mark);
871 
872 	/**
873 	 * メニューの項目にチェックマークやラジオボタンを表示するかどうかを設定する(ItemNameとItemIDについては関数DeleteMenuItemの注釈を参照してください))
874 	 *
875 	 * Params:
876 	 *      ItemName = ?
877 	 *      ItemNameLength = ?
878 	 *      ItemID = ?
879 	 *      Mark = 設定するマーク(MENUITEM_MARK_NONE等(解説は#defineの定義を参照してください)
880 	 */
881 	extern int SetMenuItemMarkWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength, int ItemID, int Mark);
882 
883 	/**
884 	 * メニューの項目がどれか選択されたかどうかを取得する
885 	 *
886 	 * Returns: dxlib_d.DxDataType.TRUE:どれか選択された  dxlib_d.DxDataType.FALSE:選択されていない
887 	 */
888 	extern int CheckMenuItemSelectAll();
889 
890 	/**
891 	 * メニューに選択項目を追加する
892 	 *
893 	 * Params:
894 	 *      ParentItemName = 親となる項目の名前、親が持つリストの末端に新しい項目を追加します
895 	 *      NewItemName = 新しい項目の名前
896 	 */
897 	extern int AddMenuItem_Name(const (dxlib_d.DxDataType.TCHAR)* ParentItemName, const (dxlib_d.DxDataType.TCHAR)* NewItemName);
898 
899 	/**
900 	 * メニューに選択項目を追加する
901 	 *
902 	 * Params:
903 	 *      ParentItemName = 親となる項目の名前、親が持つリストの末端に新しい項目を追加します
904 	 *      ParentItemNameLength = ?
905 	 *      NewItemName = 新しい項目の名前
906 	 *      NewItemNameLength = ?
907 	 */
908 	extern int AddMenuItem_NameWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ParentItemName, size_t ParentItemNameLength, const (dxlib_d.DxDataType.TCHAR)* NewItemName, size_t NewItemNameLength);
909 
910 	/**
911 	 * メニューのリストに区切り線を追加する
912 	 *
913 	 * Params:
914 	 *      ParentItemName = 区切り線を付ける項目リストの親の名前、リストの末端に区切り線を追加します
915 	 */
916 	extern int AddMenuLine_Name(const (dxlib_d.DxDataType.TCHAR)* ParentItemName);
917 
918 	/**
919 	 * メニューのリストに区切り線を追加する
920 	 *
921 	 * Params:
922 	 *      ParentItemName = 区切り線を付ける項目リストの親の名前、リストの末端に区切り線を追加します
923 	 *      ParentItemNameLength = ?
924 	 */
925 	extern int AddMenuLine_NameWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ParentItemName, size_t ParentItemNameLength);
926 
927 	/**
928 	 * 指定の項目と、指定の項目の一つ上の項目との間に新しい項目を追加する
929 	 */
930 	extern int InsertMenuItem_Name(const (dxlib_d.DxDataType.TCHAR)* ItemName, const (dxlib_d.DxDataType.TCHAR)* NewItemName);
931 
932 	/**
933 	 * 指定の項目と、指定の項目の一つ上の項目との間に新しい項目を追加する
934 	 */
935 	extern int InsertMenuItem_NameWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength, const (dxlib_d.DxDataType.TCHAR)* NewItemName, size_t NewItemNameLength);
936 
937 	/**
938 	 * 指定の項目と、指定の項目の一つ上の項目との間に区切り線を追加する
939 	 */
940 	extern int InsertMenuLine_Name(const (dxlib_d.DxDataType.TCHAR)* ItemName);
941 
942 	/**
943 	 * 指定の項目と、指定の項目の一つ上の項目との間に区切り線を追加する
944 	 */
945 	extern int InsertMenuLine_NameWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength);
946 
947 	/**
948 	 * メニューから選択項目を削除する
949 	 */
950 	extern int DeleteMenuItem_Name(const (dxlib_d.DxDataType.TCHAR)* ItemName);
951 
952 	/**
953 	 * メニューから選択項目を削除する
954 	 */
955 	extern int DeleteMenuItem_NameWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength);
956 
957 	/**
958 	 * メニューが選択されたかどうかを取得する
959 	 *
960 	 * Returns: 0:選択されていない  1:選択された
961 	 */
962 	extern int CheckMenuItemSelect_Name(const (dxlib_d.DxDataType.TCHAR)* ItemName);
963 
964 	/**
965 	 * メニューが選択されたかどうかを取得する
966 	 *
967 	 * Returns: 0:選択されていない  1:選択された
968 	 */
969 	extern int CheckMenuItemSelect_NameWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength);
970 
971 	/**
972 	 * メニューの項目を選択出来るかどうかを設定する
973 	 *
974 	 * Params:
975 	 *      ItemName = ?
976 	 *      EnableFlag = 1:選択できる  0:選択できない
977 	 */
978 	extern int SetMenuItemEnable_Name(const (dxlib_d.DxDataType.TCHAR)* ItemName, int EnableFlag);
979 
980 	/**
981 	 * メニューの項目を選択出来るかどうかを設定する
982 	 *
983 	 * Params:
984 	 *      ItemName = ?
985 	 *      ItemNameLength = ?
986 	 *      EnableFlag = 1:選択できる  0:選択できない
987 	 */
988 	extern int SetMenuItemEnable_NameWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength, int EnableFlag);
989 
990 	/**
991 	 * メニューの項目にチェックマークやラジオボタンを表示するかどうかを設定する
992 	 *
993 	 * Params:
994 	 *      ItemName = ?
995 	 *      Mark = 設定するマーク(MENUITEM_MARK_NONE等)
996 	 */
997 	extern int SetMenuItemMark_Name(const (dxlib_d.DxDataType.TCHAR)* ItemName, int Mark);
998 
999 	/**
1000 	 * メニューの項目にチェックマークやラジオボタンを表示するかどうかを設定する
1001 	 *
1002 	 * Params:
1003 	 *      ItemName = ?
1004 	 *      ItemNameLength = ?
1005 	 *      Mark = 設定するマーク(MENUITEM_MARK_NONE等)
1006 	 */
1007 	extern int SetMenuItemMark_NameWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength, int Mark);
1008 
1009 	/**
1010 	 * メニューに選択項目を追加する
1011 	 */
1012 	extern int AddMenuItem_ID(int ParentItemID, const (dxlib_d.DxDataType.TCHAR)* NewItemName, int NewItemID = -1);
1013 
1014 	/**
1015 	 * メニューに選択項目を追加する
1016 	 */
1017 	extern int AddMenuItem_IDWithStrLen(int ParentItemID, const (dxlib_d.DxDataType.TCHAR)* NewItemName, size_t NewItemNameLength, int NewItemID = -1);
1018 
1019 	/**
1020 	 * メニューのリストに区切り線を追加する
1021 	 */
1022 	extern int AddMenuLine_ID(int ParentItemID);
1023 
1024 	/**
1025 	 * 指定の項目と、指定の項目の一つ上の項目との間に新しい項目を追加する
1026 	 */
1027 	extern int InsertMenuItem_ID(int ItemID, int NewItemID);
1028 
1029 	/**
1030 	 * 指定の項目と、指定の項目の一つ上の項目との間に区切り線を追加する
1031 	 */
1032 	extern int InsertMenuLine_ID(int ItemID, int NewItemID);
1033 
1034 	/**
1035 	 * メニューから選択項目を削除する
1036 	 */
1037 	extern int DeleteMenuItem_ID(int ItemID);
1038 
1039 	/**
1040 	 * メニューが選択されたかどうかを取得する
1041 	 *
1042 	 * Returns: 0:選択されていない  1:選択された
1043 	 */
1044 	extern int CheckMenuItemSelect_ID(int ItemID);
1045 
1046 	/**
1047 	 * メニューの項目を選択出来るかどうかを設定する
1048 	 *
1049 	 * Params:
1050 	 *      ItemID = ?
1051 	 *      EnableFlag = 1:選択できる  0:選択できない
1052 	 */
1053 	extern int SetMenuItemEnable_ID(int ItemID, int EnableFlag);
1054 
1055 	/**
1056 	 * メニューの項目にチェックマークやラジオボタンを表示するかどうかを設定する(Mark:設定するマーク(MENUITEM_MARK_NONE等))
1057 	 *
1058 	 * Params:
1059 	 *      ItemID = ?
1060 	 *      Mark = ?
1061 	 */
1062 	extern int SetMenuItemMark_ID(int ItemID, int Mark);
1063 
1064 	/**
1065 	 * メニューの全ての選択項目を削除する
1066 	 */
1067 	extern int DeleteMenuItemAll();
1068 
1069 	/**
1070 	 * メニューが選択されたかどうかの情報をリセット
1071 	 */
1072 	extern int ClearMenuItemSelect();
1073 
1074 	/**
1075 	 * メニューの項目名から項目識別番号を取得する
1076 	 */
1077 	extern int GetMenuItemID(const (dxlib_d.DxDataType.TCHAR)* ItemName);
1078 
1079 	/**
1080 	 * メニューの項目名から項目識別番号を取得する
1081 	 */
1082 	extern int GetMenuItemIDWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ItemName, size_t ItemNameLength);
1083 
1084 	/**
1085 	 * メニューの項目識別番号から項目名を取得する
1086 	 */
1087 	extern int GetMenuItemName(int ItemID, dxlib_d.DxDataType.TCHAR* NameBuffer);
1088 
1089 	/**
1090 	 * メニューをリソースから読み込む
1091 	 */
1092 	extern int LoadMenuResource(int MenuResourceID);
1093 
1094 	/**
1095 	 * メニューの選択項目が選択されたときに呼ばれるコールバック関数を設定する
1096 	 *
1097 	 * Params:
1098 	 *      CallBackFunction = 項目が選択されたときに呼ばれるコールバック関数、引数に項目名と項目の識別番号を渡されて呼ばれる
1099 	 *      ItemName = ?
1100 	 *      ItemID = ?
1101 	 */
1102 	extern int SetMenuItemSelectCallBackFunction(void function(const (dxlib_d.DxDataType.TCHAR)* ItemName, int ItemID) CallBackFunction);
1103 
1104 	/**
1105 	 * (古い関数)ウインドウにメニューを設定する
1106 	 */
1107 	extern int SetWindowMenu(int MenuID, int function(dxlib_d.DxDataType.WORD ID) MenuProc);
1108 
1109 	/**
1110 	 * (古い関数)メニューを表示するかどうかをセットする
1111 	 */
1112 	extern int SetDisplayMenuFlag(int Flag);
1113 
1114 	/**
1115 	 * (古い関数)メニューを表示しているかどうかを取得する
1116 	 */
1117 	extern int GetDisplayMenuFlag();
1118 
1119 	/**
1120 	 * メニューを使用しているかどうかを得る
1121 	 */
1122 	extern int GetUseMenuFlag();
1123 
1124 	/**
1125 	 * フルスクリーン時にメニューを自動で表示したり非表示にしたりするかどうかのフラグをセットする
1126 	 */
1127 	extern int SetAutoMenuDisplayFlag(int Flag);
1128 
1129 	// DxNetwork.cpp関数プロトタイプ宣言
1130 
1131 	version (DX_NON_NETWORK) {
1132 	} else {
1133 		/**
1134 		 * WinSockで最後に発生したエラーのコードを取得する
1135 		 */
1136 		extern int GetWinSockLastError();
1137 	}
1138 
1139 	// DxInputString.cpp関数プロトタイプ宣言
1140 
1141 	version (DX_NON_KEYEX) {
1142 	} else {
1143 		/**
1144 		 * IMEの漢字変換候補表示の処理にTSFを使用するかどうかを設定する
1145 		 *
1146 		 * Params:
1147 		 *      UseFlag = dxlib_d.DxDataType.TRUE:使用する(デフォルト)  dxlib_d.DxDataType.FALSE:使用しない
1148 		 */
1149 		extern int SetUseTSFFlag(int UseFlag);
1150 	}
1151 
1152 	// DxInput.cpp関数プロトタイプ宣言
1153 
1154 	version (DX_NON_INPUT) {
1155 	} else {
1156 		/**
1157 		 * DirectInputのキーボードの協調レベルを排他レベルにするかどうかを設定する、DxLib_Initの呼び出し前でのみ実行可能
1158 		 *
1159 		 * Params:
1160 		 *      Flag = dxlib_d.DxDataType.TRUE:排他レベルにする  dxlib_d.DxDataType.FALSE:標準レベルにする(デフォルト)
1161 		 */
1162 		extern int SetKeyExclusiveCooperativeLevelFlag(int Flag);
1163 
1164 		/**
1165 		 * キーボードの入力処理にDirectInputを使わないかどうかを設定する
1166 		 *
1167 		 * Params:
1168 		 *      Flag = dxlib_d.DxDataType.TRUE:DirectInputを使わず、Windows標準機能を使用する  dxlib_d.DxDataType.FALSE:DirectInputを使用する
1169 		 */
1170 		extern int SetKeyboardNotDirectInputFlag(int Flag);
1171 
1172 		/**
1173 		 * 入力処理にDirectInputを使用するかどうかを設定する
1174 		 *
1175 		 * Params:
1176 		 *      UseFlag = dxlib_d.DxDataType.TRUE:DirectInputを使用する  dxlib_d.DxDataType.FALSE:DirectInputを使わず、Windows標準機能を使用する
1177 		 */
1178 		extern int SetUseDirectInputFlag(int UseFlag);
1179 
1180 		/**
1181 		 * マウスの入力処理にDirectInputを使用する場合の動作モードを設定する
1182 		 *
1183 		 * Params:
1184 		 *      Mode = 0:ウィンドウがアクティブな場合のみ DirectInputを使用する  1:ウィンドウのアクティブ状態に関係なく DirectInputを使用する
1185 		 */
1186 		extern int SetDirectInputMouseMode(int Mode);
1187 
1188 		/**
1189 		 * Xbox360コントローラの入力処理にXInputを使用するかどうかを設定する
1190 		 *
1191 		 * Params:
1192 		 *      Flag = dxlib_d.DxDataType.TRUE:XInputを使用する(デフォルト)  dxlib_d.DxDataType.FALSE:XInputを使用しない
1193 		 */
1194 		extern int SetUseXInputFlag(int Flag);
1195 
1196 		/**
1197 		 * Xbox360コントローラやXbox OneコントローラをDirectInputコントローラとしても検出するかどうかを設定する、DxLib_Initの呼び出し前でのみ実行可能
1198 		 *
1199 		 * Params:
1200 		 *      Flag = dxlib_d.DxDataType.TRUE:DirectInputコントローラとしても検出する  dxlib_d.DxDataType.FALSE:DirectInputコントローラとしては検出しない(デフォルト)
1201 		 */
1202 		extern int SetUseXboxControllerDirectInputFlag(int Flag);
1203 
1204 		/**
1205 		 * ジョイパッドのGUIDを得る
1206 		 */
1207 		extern int GetJoypadGUID(int PadIndex, dxlib_d.DxDataTypeWin.GUID* GuidInstanceBuffer, dxlib_d.DxDataTypeWin.GUID* GuidProductBuffer = null);
1208 
1209 		/**
1210 		 * ジョイパッドのデバイス登録名と製品登録名を取得する(InstanceNameBuffer, ProductNameBuffer共に260以上のバッファサイズが必要)
1211 		 */
1212 		extern int GetJoypadName(int InputType, dxlib_d.DxDataType.TCHAR* InstanceNameBuffer, dxlib_d.DxDataType.TCHAR* ProductNameBuffer);
1213 
1214 		/**
1215 		 * DXライブラリのキーコード(KEY_INPUT_Aなど)に対応するWindowsの仮想キーコード(VK_LEFTなど)を取得する
1216 		 *
1217 		 * Params:
1218 		 *      KeyCode = 変換したいDXライブラリのキーコード
1219 		 *
1220 		 * Returns: Windowsの仮想キーコード
1221 		 */
1222 		extern int ConvertKeyCodeToVirtualKey(int KeyCode);
1223 
1224 		/**
1225 		 * Windowsの仮想キーコード(VK_LEFTなど)に対応するDXライブラリのキーコード(KEY_INPUT_Aなど)を取得する
1226 		 *
1227 		 * Params:
1228 		 *      VirtualKey = 変換したいWindowsの仮想キーコード
1229 		 *
1230 		 * Returns: DXライブラリのキーコード
1231 		 */
1232 		extern int ConvertVirtualKeyToKeyCode(int VirtualKey);
1233 	}
1234 
1235 	version (DX_NOTUSE_DRAWFUNCTION) {
1236 	} else {
1237 		// 画像からグラフィックハンドルを作成する関数
1238 
1239 		/**
1240 		 * 画像リソースからグラフィックハンドルを作成する
1241 		 */
1242 		extern int LoadGraphToResource(int ResourceID);
1243 
1244 		/**
1245 		 * 画像リソースを分割してグラフィックハンドルを作成する
1246 		 */
1247 		extern int LoadDivGraphToResource(int ResourceID, int AllNum, int XNum, int YNum, int XSize, int YSize, int* HandleArray);
1248 
1249 		/**
1250 		 * 画像リソースを分割してグラフィックハンドルを作成する(float型)
1251 		 */
1252 		extern int LoadDivGraphFToResource(int ResourceID, int AllNum, int XNum, int YNum, float XSize, float YSize, int* HandleArray);
1253 
1254 		/**
1255 		 * 画像リソースからグラフィックハンドルを作成する
1256 		 */
1257 		extern int LoadGraphToResource(const (dxlib_d.DxDataType.TCHAR)* ResourceName, const (dxlib_d.DxDataType.TCHAR)* ResourceType);
1258 
1259 		/**
1260 		 * 画像リソースからグラフィックハンドルを作成する
1261 		 */
1262 		extern int LoadGraphToResourceWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ResourceName, size_t ResourceNameLength, const (dxlib_d.DxDataType.TCHAR)* ResourceType, size_t ResourceTypeLength);
1263 
1264 		/**
1265 		 * 画像リソースを分割してグラフィックハンドルを作成する
1266 		 */
1267 		extern int LoadDivGraphToResource(const (dxlib_d.DxDataType.TCHAR)* ResourceName, const (dxlib_d.DxDataType.TCHAR)* ResourceType, int AllNum, int XNum, int YNum, int XSize, int YSize, int* HandleArray);
1268 
1269 		/**
1270 		 * 画像リソースを分割してグラフィックハンドルを作成する
1271 		 */
1272 		extern int LoadDivGraphToResourceWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ResourceName, size_t ResourceNameLength, const (dxlib_d.DxDataType.TCHAR)* ResourceType, size_t ResourceTypeLength, int AllNum, int XNum, int YNum, int XSize, int YSize, int* HandleArray);
1273 
1274 		/**
1275 		 * 画像リソースを分割してグラフィックハンドルを作成する(float型)
1276 		 */
1277 		extern int LoadDivGraphFToResource(const (dxlib_d.DxDataType.TCHAR)* ResourceName, const (dxlib_d.DxDataType.TCHAR)* ResourceType, int AllNum, int XNum, int YNum, float XSize, float YSize, int* HandleArray);
1278 
1279 		/**
1280 		 * 画像リソースを分割してグラフィックハンドルを作成する(float型)
1281 		 */
1282 		extern int LoadDivGraphFToResourceWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ResourceName, size_t ResourceNameLength, const (dxlib_d.DxDataType.TCHAR)* ResourceType, size_t ResourceTypeLength, int AllNum, int XNum, int YNum, float XSize, float YSize, int* HandleArray);
1283 
1284 		version (DX_NON_DIRECT3D11) {
1285 		} else {
1286 			/**
1287 			 * ID3D11Texture2D からグラフィックハンドルを作成する
1288 			 */
1289 			extern int CreateGraphFromID3D11Texture2D(const (void)* pID3D11Texture2D);
1290 		}
1291 
1292 		// 画像情報関係関数
1293 
1294 		/**
1295 		 * グラフィックハンドルが持つ ID3D11Texture2Dを取得する(Direct3D11を使用している場合のみ有効)(戻り値をID3D11Texture2D*にキャストしてください)
1296 		 */
1297 		extern const (void)* GetGraphID3D11Texture2D(int GrHandle);
1298 
1299 		/**
1300 		 * グラフィックハンドルが持つ ID3D11RenderTargetViewを取得する(Direct3D11を使用していて、且つ MakeScreenで作成したグラフィックハンドルでのみ有効)(戻り値をID3D11RenderTargetView*にキャストしてください)
1301 		 */
1302 		extern const (void)* GetGraphID3D11RenderTargetView(int GrHandle);
1303 
1304 		/**
1305 		 * グラフィックハンドルが持つ ID3D11DepthStencilViewを取得する(Direct3D11を使用していて、且つ MakeScreenで作成したグラフィックハンドルでのみ有効)(戻り値をID3D11DepthStencilView*にキャストしてください)
1306 		 */
1307 		extern const (void)* GetGraphID3D11DepthStencilView(int GrHandle);
1308 
1309 		// 画面関係関数
1310 
1311 		/**
1312 		 * 裏画面の内容を指定のウインドウに転送する
1313 		 */
1314 		extern int BltBackScreenToWindow(dxlib_d.DxDataTypeWin.HWND Window, int ClientX, int ClientY);
1315 
1316 		/**
1317 		 * 裏画面の指定の領域をウインドウのクライアント領域の指定の領域に転送する
1318 		 */
1319 		extern int BltRectBackScreenToWindow(dxlib_d.DxDataTypeWin.HWND Window, dxlib_d.DxDataType.RECT BackScreenRect, dxlib_d.DxDataType.RECT WindowClientRect);
1320 
1321 		/**
1322 		 * ScreenFlipで画像を転送する先のウインドウを設定する(nullを指定すると設定解除)
1323 		 */
1324 		extern int SetScreenFlipTargetWindow(dxlib_d.DxDataTypeWin.HWND TargetWindow, double ScaleX = 1.0, double ScaleY = 1.0);
1325 
1326 		/**
1327 		 * デスクトップ画面から指定領域の画像情報をグラフィックハンドルに転送する
1328 		 */
1329 		extern int GetDesktopScreenGraph(int x1, int y1, int x2, int y2, int GrHandle, int DestX = 0, int DestY = 0);
1330 
1331 		/**
1332 		 * デスクトップ画面から指定領域の画像のメモリイメージの先頭アドレスとイメージの幅・高さ・ストライドを取得する(イメージのフォーマットはColorBitDepth = 32(バイト順でB8G8R8X8の32bitカラー) ColorBitDepth = 24(バイト順でB8G8R8の24bitカラー))
1333 		 */
1334 		extern void* GetDesktopScreenGraphMemImage(int x1, int y1, int x2, int y2, int* Width, int* Height, int* Stride, int ColorBitDepth = 32);
1335 
1336 		// その他設定関係関数
1337 
1338 		/**
1339 		 * DirectDrawやDirect3Dの協調レベルをマルチスレッド対応にするかどうかをセットする
1340 		 *
1341 		 * Params:
1342 		 *      Flag = dxlib_d.DxDataType.TRUE:マルチスレッド対応にする  dxlib_d.DxDataType.FALSE:マルチスレッド対応にしない(デフォルト)
1343 		 */
1344 		extern int SetMultiThreadFlag(int Flag);
1345 
1346 		/**
1347 		 * 使用するDirectDrawデバイスのインデックスを設定する
1348 		 */
1349 		extern int SetUseDirectDrawDeviceIndex(int Index);
1350 
1351 		/**
1352 		 * Vista,7のWindows Aeroを無効にするかどうかを設定する(DxLib_Initの前に呼ぶ必要があります)
1353 		 *
1354 		 * Params:
1355 		 *      Flag = dxlib_d.DxDataType.TRUE:無効にする(デフォルト)  dxlib_d.DxDataType.FALSE:有効にする
1356 		 */
1357 		extern int SetAeroDisableFlag(int Flag);
1358 
1359 		/**
1360 		 * Vista以降の環境でDirect3D9Exを使用するかどうかを設定する(DxLib_Initの前に呼ぶ必要があります)
1361 		 *
1362 		 * Params:
1363 		 *      Flag = dxlib_d.DxDataType.TRUE:使用する(デフォルト)  dxlib_d.DxDataType.FALSE:使用しない
1364 		 */
1365 		extern int SetUseDirect3D9Ex(int Flag);
1366 
1367 		/**
1368 		 * Direct3D11を使用するかどうかを設定する
1369 		 *
1370 		 * Params:
1371 		 *      Flag = dxlib_d.DxDataType.TRUE:使用する  dxlib_d.DxDataType.FALSE:使用しない
1372 		 */
1373 		extern int SetUseDirect3D11(int Flag);
1374 
1375 		/**
1376 		 * Direct3D11で使用する最低機能レベルを指定する関数です、尚、DX_DIRECT3D_11_FEATURE_LEVEL_11_0より低い機能レベルでの正常な動作は保証しません(デフォルトはDX_DIRECT3D_11_FEATURE_LEVEL_11_0)
1377 		 *
1378 		 * Params:
1379 		 *      Level = DX_DIRECT3D_11_FEATURE_LEVEL_10_0など
1380 		 */
1381 		extern int SetUseDirect3D11MinFeatureLevel(int Level);
1382 
1383 		/**
1384 		 * D3D_DRIVER_TYPE_WARP タイプのDirect3D 11ドライバを使用するかどうかを設定する
1385 		 *
1386 		 * Params:
1387 		 *      Flag = dxlib_d.DxDataType.TRUE:使用する  dxlib_d.DxDataType.FALSE:使用しない(デフォルト)
1388 		 */
1389 		extern int SetUseDirect3D11WARPDriver(int Flag);
1390 
1391 		/**
1392 		 * 使用するDirect3Dのバージョンを設定する、DxLib_Init呼び出しの前でのみ使用可能
1393 		 *
1394 		 * Params:
1395 		 *      Version = DX_DIRECT3D_9など
1396 		 */
1397 		extern int SetUseDirect3DVersion(int Version);
1398 
1399 		/**
1400 		 * 使用しているDirect3Dのバージョンを取得する
1401 		 *
1402 		 * Returns: DX_DIRECT3D_9など
1403 		 */
1404 		extern int GetUseDirect3DVersion();
1405 
1406 		/**
1407 		 * 使用しているDirect3D11のFeatureLevel(DX_DIRECT3D_11_FEATURE_LEVEL_9_1等)を取得する
1408 		 *
1409 		 * Returns: -1:エラー -1以外:Feature Level
1410 		 */
1411 		extern int GetUseDirect3D11FeatureLevel();
1412 
1413 		/**
1414 		 * 使用するグラフィックスデバイスのアダプターのインデックスを設定する
1415 		 */
1416 		extern int SetUseDirect3D11AdapterIndex(int Index);
1417 
1418 		/**
1419 		 * (同効果のSetUseSoftwareRenderModeFlagを使用して下さい)DirectDrawを使用するかどうかを設定する
1420 		 */
1421 		extern int SetUseDirectDrawFlag(int Flag);
1422 
1423 		/**
1424 		 * GDI描画を使用するかどうかを設定する
1425 		 */
1426 		extern int SetUseGDIFlag(int Flag);
1427 
1428 		/**
1429 		 * GDI描画を使用するかどうかを取得する
1430 		 */
1431 		extern int GetUseGDIFlag();
1432 
1433 		/**
1434 		 * DirectDrawが使用するGUIDを設定する
1435 		 */
1436 		extern int SetDDrawUseGuid(const (dxlib_d.DxDataTypeWin.GUID)* Guid);
1437 
1438 		/**
1439 		 * 現在使用しているDirectDrawオブジェクトのアドレスを取得する(戻り値をIDirectDraw7*にキャストして下さい)
1440 		 */
1441 		extern const (void)* GetUseDDrawObj();
1442 
1443 		/**
1444 		 * 有効な DirectDrawデバイスのGUIDを取得する
1445 		 */
1446 		extern const (dxlib_d.DxDataTypeWin.GUID)* GetDirectDrawDeviceGUID(int Number);
1447 
1448 		/**
1449 		 * 有効な DirectDrawデバイスの名前を取得する
1450 		 */
1451 		extern int GetDirectDrawDeviceDescription(int Number, char* StringBuffer);
1452 
1453 		/**
1454 		 * 有効な DirectDrawデバイスの数を取得する
1455 		 */
1456 		extern int GetDirectDrawDeviceNum();
1457 
1458 		/**
1459 		 * 使用中のDirect3DDevice9オブジェクトを取得する(戻り値をIDirect3DDevice9*にキャストして下さい)
1460 		 */
1461 		extern const (void)* GetUseDirect3DDevice9();
1462 
1463 		/**
1464 		 * 使用中のバックバッファのDirect3DSurface9オブジェクトを取得する(戻り値をD_IDirect3DSurface9*にキャストしてください)
1465 		 */
1466 		extern const (void)* GetUseDirect3D9BackBufferSurface();
1467 
1468 		/**
1469 		 * 使用中のID3D11Deviceオブジェクトを取得する(戻り値をID3D11Device*にキャストして下さい)
1470 		 */
1471 		extern const (void)* GetUseDirect3D11Device();
1472 
1473 		/**
1474 		 * 使用中のID3D11DeviceContextオブジェクトを取得する(戻り値をID3D11DeviceContext*にキャストして下さい)
1475 		 */
1476 		extern const (void)* GetUseDirect3D11DeviceContext();
1477 
1478 		/**
1479 		 * 使用中のバックバッファのID3D11Texture2Dオブジェクトを取得する(戻り値をID3D11Texture2D*にキャストしてください)
1480 		 */
1481 		extern const (void)* GetUseDirect3D11BackBufferTexture2D();
1482 
1483 		/**
1484 		 * 使用中のバックバッファのID3D11RenderTargetViewオブジェクトを取得する(戻り値をID3D11RenderTargetView*にキャストしてください)
1485 		 */
1486 		extern const (void)* GetUseDirect3D11BackBufferRenderTargetView();
1487 
1488 		/**
1489 		 * 使用中の深度ステンシルバッファのID3D11Texture2Dオブジェクトを取得する(戻り値をID3D11Texture2D*にキャストしてください)
1490 		 */
1491 		extern const (void)* GetUseDirect3D11DepthStencilTexture2D();
1492 
1493 		/**
1494 		 * 指定のID3D11RenderTargetViewを描画対象にする(pID3D11DepthStencilViewがnullの場合はデフォルトの深度ステンシルバッファを使用する)
1495 		 */
1496 		extern int SetDrawScreen_ID3D11RenderTargetView(const (void)* pID3D11RenderTargetView, const (void)* pID3D11DepthStencilView = null);
1497 
1498 		/**
1499 		 * DXライブラリが行ったDirect3Dの設定を再度行う(特殊用途)
1500 		 */
1501 		extern int RefreshDxLibDirect3DSetting();
1502 
1503 		version (DX_NON_MEDIA_FOUNDATION) {
1504 		} else {
1505 			/**
1506 			 * Media Foundationを使用するかどうかを設定する
1507 			 *
1508 			 * Params:
1509 			 *      Flag = dxlib_d.DxDataType.TRUE:使用する(デフォルト)  dxlib_d.DxDataType.FALSE:使用しない
1510 			 */
1511 			extern int SetUseMediaFoundationFlag(int Flag);
1512 		}
1513 
1514 		// 色情報取得用関数
1515 
1516 		/**
1517 		 * 色ビット情報解析
1518 		 */
1519 		extern int ColorKaiseki(const (void)* PixelData, dxlib_d.DxLib.COLORDATA* ColorData);
1520 
1521 		// DxMask.cpp 関数プロトタイプ宣言
1522 		version (DX_NON_MASK) {
1523 		} else {
1524 			/**
1525 			 * マスクハンドルにBMPデータを転送する
1526 			 */
1527 			extern int BmpBltToMask(dxlib_d.DxDataType.HBITMAP Bmp, int BmpPointX, int BmpPointY, int MaskHandle);
1528 		}
1529 	}
1530 
1531 	// DxFont.cpp 関数プロトタイプ宣言
1532 
1533 	version (DX_NON_FONT) {
1534 	} else {
1535 		/**
1536 		 * 指定のフォントファイルをシステムに追加する
1537 		 *
1538 		 * Returns: null:失敗  NULL以外:フォントハンドル(WindowsOSのものなので、DXライブラリのフォントハンドルとは別物です)
1539 		 */
1540 		extern dxlib_d.DxDataTypeWin.HANDLE AddFontFile(const (dxlib_d.DxDataType.TCHAR)* FontFilePath);
1541 
1542 		/**
1543 		 * 指定のフォントファイルをシステムに追加する
1544 		 *
1545 		 * Returns: null:失敗  NULL以外:フォントハンドル(WindowsOSのものなので、DXライブラリのフォントハンドルとは別物です)
1546 		 */
1547 		extern dxlib_d.DxDataTypeWin.HANDLE AddFontFileWithStrLen(const (dxlib_d.DxDataType.TCHAR)* FontFilePath, size_t FontFilePathLength);
1548 
1549 		/**
1550 		 * 指定のメモリアドレスに展開したフォントファイルイメージをシステムに追加する)
1551 		 *
1552 		 * Returns: null:失敗  NULL以外:フォントハンドル(WindowsOSのものなので、DXライブラリのフォントハンドルとは別物です
1553 		 */
1554 		extern dxlib_d.DxDataTypeWin.HANDLE AddFontFileFromMem(const (void)* FontFileImage, int FontFileImageSize);
1555 
1556 		/**
1557 		 * 指定のフォントハンドルをシステムから削除する(引数はAddFontFileやAddFontFileFromMemの戻り値)
1558 		 */
1559 		extern int RemoveFontFile(dxlib_d.DxDataTypeWin.HANDLE FontHandle);
1560 
1561 		version (DX_NON_SAVEFUNCTION) {
1562 		} else {
1563 			/**
1564 			 * フォントデータファイルを作成する
1565 			 */
1566 			extern int CreateFontDataFile(const (dxlib_d.DxDataType.TCHAR)* SaveFilePath, const (dxlib_d.DxDataType.TCHAR)* FontName, int Size, int BitDepth /* DX_FONTIMAGE_BIT_1等 */, int Thick, int Italic = dxlib_d.DxDataType.FALSE, int CharSet = -1, const (dxlib_d.DxDataType.TCHAR)* SaveCharaList = null);
1567 
1568 			/**
1569 			 * フォントデータファイルを作成する
1570 			 */
1571 			extern int CreateFontDataFileWithStrLen(const (dxlib_d.DxDataType.TCHAR)* SaveFilePath, size_t SaveFilePathLength, const (dxlib_d.DxDataType.TCHAR)* FontName, size_t FontNameLength, int Size, int BitDepth /* DX_FONTIMAGE_BIT_1等 */, int Thick, int Italic = dxlib_d.DxDataType.FALSE, int CharSet = -1, const (dxlib_d.DxDataType.TCHAR)* SaveCharaList = null, size_t SaveCharaListLength = 0);
1572 		}
1573 	}
1574 
1575 	// 基本イメージデータのロード+DIB関係
1576 
1577 	/**
1578 	 * 画像ファイルからDIBデータを作成する
1579 	 */
1580 	extern dxlib_d.DxDataType.HBITMAP CreateDIBGraph(const (dxlib_d.DxDataType.TCHAR)* FileName, int ReverseFlag, dxlib_d.DxLib.COLORDATA* SrcColor);
1581 
1582 	/**
1583 	 * 画像ファイルからDIBデータを作成する
1584 	 */
1585 	extern dxlib_d.DxDataType.HBITMAP CreateDIBGraphWithStrLen(const (dxlib_d.DxDataType.TCHAR)* FileName, size_t FileNameLength, int ReverseFlag, dxlib_d.DxLib.COLORDATA* SrcColor);
1586 
1587 	/**
1588 	 * BMPデータからDIBデータクを作成する
1589 	 */
1590 	extern dxlib_d.DxDataType.HBITMAP CreateDIBGraphToMem(const (dxlib_d.DxDataType.BITMAPINFO)* BmpInfo, const (void)* GraphData, int ReverseFlag, dxlib_d.DxLib.COLORDATA* SrcColor);
1591 
1592 	/**
1593 	 * 画像ファイルからDIBデータとマスク用DIBデータを作成する
1594 	 */
1595 	extern int CreateDIBGraph_plus_Alpha(const (dxlib_d.DxDataType.TCHAR)* FileName, dxlib_d.DxDataType.HBITMAP* RGBBmp, dxlib_d.DxDataType.HBITMAP* AlphaBmp, int ReverseFlag = dxlib_d.DxDataType.FALSE, dxlib_d.DxLib.COLORDATA* SrcColor = null);
1596 
1597 	/**
1598 	 * 画像ファイルからDIBデータとマスク用DIBデータを作成する
1599 	 */
1600 	extern int CreateDIBGraph_plus_AlphaWithStrLen(const (dxlib_d.DxDataType.TCHAR)* FileName, size_t FileNameLength, dxlib_d.DxDataType.HBITMAP* RGBBmp, dxlib_d.DxDataType.HBITMAP* AlphaBmp, int ReverseFlag = dxlib_d.DxDataType.FALSE, dxlib_d.DxLib.COLORDATA* SrcColor = null);
1601 
1602 	/**
1603 	 * 画像ファイル若しくはメモリ上に展開された画像ファイルイメージからDIBデータを作成する
1604 	 */
1605 	extern dxlib_d.DxDataType.HBITMAP CreateDIBGraphVer2(const (dxlib_d.DxDataType.TCHAR)* FileName, const (void)* MemImage, int MemImageSize, int ImageType, int ReverseFlag, dxlib_d.DxLib.COLORDATA* SrcColor);
1606 
1607 	/**
1608 	 * 画像ファイル若しくはメモリ上に展開された画像ファイルイメージからDIBデータを作成する
1609 	 */
1610 	extern dxlib_d.DxDataType.HBITMAP CreateDIBGraphVer2WithStrLen(const (dxlib_d.DxDataType.TCHAR)* FileName, size_t FileNameLength, const (void)* MemImage, int MemImageSize, int ImageType, int ReverseFlag, dxlib_d.DxLib.COLORDATA* SrcColor);
1611 
1612 	/**
1613 	 * 画像ファイル若しくはメモリ上に展開された画像ファイルイメージからDIBデータとマスク用DIBデータを作成する
1614 	 */
1615 	extern int CreateDIBGraphVer2_plus_Alpha(const (dxlib_d.DxDataType.TCHAR)* FileName, const (void)* MemImage, int MemImageSize, const (void)* AlphaImage, int AlphaImageSize, int ImageType, dxlib_d.DxDataType.HBITMAP* RGBBmp, dxlib_d.DxDataType.HBITMAP* AlphaBmp, int ReverseFlag, dxlib_d.DxLib.COLORDATA* SrcColor);
1616 
1617 	/**
1618 	 * 画像ファイル若しくはメモリ上に展開された画像ファイルイメージからDIBデータとマスク用DIBデータを作成する
1619 	 */
1620 	extern int CreateDIBGraphVer2_plus_AlphaWithStrLen(const (dxlib_d.DxDataType.TCHAR)* FileName, size_t FileNameLength, const (void)* MemImage, int MemImageSize, const (void)* AlphaImage, int AlphaImageSize, int ImageType, dxlib_d.DxDataType.HBITMAP* RGBBmp, dxlib_d.DxDataType.HBITMAP* AlphaBmp, int ReverseFlag, dxlib_d.DxLib.COLORDATA* SrcColor);
1621 
1622 	/**
1623 	 * BMPデータから基本イメージデータを構築する
1624 	 *
1625 	 * Returns: 0:正常終了  1:コピーを行った  -1:エラー
1626 	 */
1627 	extern int ConvBitmapToGraphImage(const (dxlib_d.DxDataType.BITMAPINFO)* BmpInfo, void* GraphData, dxlib_d.DxLib.BASEIMAGE* GraphImage, int CopyFlag);
1628 
1629 	/**
1630 	 * 基本イメージデータをBMPデータに変換するGraphImageをBMPに変換する(アルファデータはあっても無視される)
1631 	 *
1632 	 * Returns: 0:正常終了  1:コピーを行った  -1:エラー
1633 	 */
1634 	extern int ConvGraphImageToBitmap(const (dxlib_d.DxLib.BASEIMAGE)* GraphImage, dxlib_d.DxDataType.BITMAPINFO* BmpInfo, void** GraphData, int CopyFlag, int FullColorConv = dxlib_d.DxDataType.TRUE);
1635 
1636 	// 基本イメージデータ構造体関係
1637 
1638 	/**
1639 	 * 基本イメージデータを使用して UpdateLayerdWindowを行う
1640 	 */
1641 	extern int UpdateLayerdWindowForBaseImage(const (dxlib_d.DxLib.BASEIMAGE)* BaseImage);
1642 
1643 	/**
1644 	 * 基本イメージデータの指定の範囲を使用して UpdateLayerdWindowを行う
1645 	 */
1646 	extern int UpdateLayerdWindowForBaseImageRect(const (dxlib_d.DxLib.BASEIMAGE)* BaseImage, int x1, int y1, int x2, int y2);
1647 
1648 	/**
1649 	 * 乗算済みアルファの基本イメージデータを使用して UpdateLayerdWindowを行う
1650 	 */
1651 	extern int UpdateLayerdWindowForPremultipliedAlphaBaseImage(const (dxlib_d.DxLib.BASEIMAGE)* BaseImage);
1652 
1653 	/**
1654 	 * 乗算済みアルファの基本イメージデータの指定の範囲を使用して UpdateLayerdWindowを行う
1655 	 */
1656 	extern int UpdateLayerdWindowForPremultipliedAlphaBaseImageRect(const (dxlib_d.DxLib.BASEIMAGE)* BaseImage, int x1, int y1, int x2, int y2);
1657 
1658 	// デスクトップキャプチャ
1659 
1660 	/**
1661 	 * デスクトップの指定の領域を基本イメージデータに転送する
1662 	 */
1663 	extern int GetDesktopScreenBaseImage(int x1, int y1, int x2, int y2, dxlib_d.DxLib.BASEIMAGE* BaseImage, int DestX, int DestY);
1664 
1665 	// DxSoftImage.cpp関数プロトタイプ宣言
1666 	version (DX_NON_SOFTIMAGE) {
1667 	} else {
1668 		/**
1669 		 * ソフトウエアイメージハンドルを使用して UpdateLayerdWindowを行う
1670 		 */
1671 		extern int UpdateLayerdWindowForSoftImage(int SIHandle);
1672 
1673 		/**
1674 		 * ソフトウエアイメージハンドルの指定の範囲を使用して UpdateLayerdWindowを行う
1675 		 */
1676 		extern int UpdateLayerdWindowForSoftImageRect(int SIHandle, int x1, int y1, int x2, int y2);
1677 
1678 		/**
1679 		 * 乗算済みアルファのソフトウエアイメージハンドルを使用して UpdateLayerdWindowを行う
1680 		 */
1681 		extern int UpdateLayerdWindowForPremultipliedAlphaSoftImage(int SIHandle);
1682 
1683 		/**
1684 		 * 乗算済みアルファのソフトウエアイメージハンドルの指定の範囲を使用して UpdateLayerdWindowを行う
1685 		 */
1686 		extern int UpdateLayerdWindowForPremultipliedAlphaSoftImageRect(int SIHandle, int x1, int y1, int x2, int y2);
1687 
1688 		// デスクトップキャプチャ
1689 
1690 		/**
1691 		 * デスクトップの指定の領域をソフトウエアイメージハンドルに転送する
1692 		 */
1693 		extern int GetDesktopScreenSoftImage(int x1, int y1, int x2, int y2, int SIHandle, int DestX, int DestY);
1694 	}
1695 
1696 	// DxSound.cpp関数プロトタイプ宣言
1697 	version (DX_NON_SOUND) {
1698 	} else {
1699 		// サウンドデータ管理系関数
1700 
1701 		/**
1702 		 * サウンドリソースからサウンドハンドルを作成する
1703 		 */
1704 		extern int LoadSoundMemByResource(const (dxlib_d.DxDataType.TCHAR)* ResourceName, const (dxlib_d.DxDataType.TCHAR)* ResourceType, int BufferNum = 1);
1705 
1706 		/**
1707 		 * サウンドリソースからサウンドハンドルを作成する
1708 		 */
1709 		extern int LoadSoundMemByResourceWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ResourceName, size_t ResourceNameLength, const (dxlib_d.DxDataType.TCHAR)* ResourceType, size_t ResourceTypeLength, int BufferNum = 1);
1710 
1711 		// 設定関係関数
1712 
1713 		/**
1714 		 * サウンドの処理をソフトウエアで行うかどうかを設定する
1715 		 *
1716 		 * Params:
1717 		 *      Flag = dxlib_d.DxDataType.TRUE:ソフトウエア  dxlib_d.DxDataType.FALSE:ハードウエア(デフォルト)
1718 		 */
1719 		extern int SetUseSoftwareMixingSoundFlag(int Flag);
1720 
1721 		/**
1722 		 * サウンドの再生にXAudioを使用するかどうかを設定する
1723 		 *
1724 		 * Params:
1725 		 *      Flag = dxlib_d.DxDataType.TRUE:使用する  dxlib_d.DxDataType.FALSE:使用しない(デフォルト)
1726 		 */
1727 		extern int SetEnableXAudioFlag(int Flag);
1728 
1729 		/**
1730 		 * サウンドの再生にWASAPIを使用するかどうかを設定する
1731 		 *
1732 		 * Params:
1733 		 *      Flag = dxlib_d.DxDataType.TRUE:使用する  dxlib_d.DxDataType.FALSE:使用しない(デフォルト)
1734 		 *      IsExclusive = dxlib_d.DxDataType.TRUE:排他モードを使用する  dxlib_d.DxDataType.FALSE:排他モードを使用しない
1735 		 *      DevicePeriod = 再生遅延時間、100ナノ秒単位(100000で10ミリ秒)、-1でデフォルト値
1736 		 *      SamplePerSec = サンプリングレート
1737 		 */
1738 		extern int SetEnableWASAPIFlag(int Flag, int IsExclusive = dxlib_d.DxDataType.TRUE, int DevicePeriod = -1, int SamplePerSec = 44100);
1739 
1740 		version (DX_NON_ASIO) {
1741 		} else {
1742 			/**
1743 			 * サウンドの再生にASIOを使用するかどうかを設定する
1744 			 *
1745 			 * Params:
1746 			 *      Flag = dxlib_d.DxDataType.TRUE:使用する  dxlib_d.DxDataType.FALSE:使用しない(デフォルト)
1747 			 *      BufferSize = 再生バッファのサイズ、小さいほど遅延が少なくなりますが、処理が間に合わずにブツブツノイズが発生する可能性も高くなります(-1でデフォルト値)
1748 			 *      SamplePerSec = サンプリングレート
1749 			 */
1750 			extern int SetEnableASIOFlag(int Flag, int BufferSize = -1, int SamplePerSec = 44100);
1751 		}
1752 
1753 		// 情報取得系関数
1754 
1755 		/**
1756 		 * DXライブラリが使用しているDirectSound オブジェクトを取得する
1757 		 * 戻り値をIDirectSound*にキャストして下さい
1758 		 */
1759 		extern const (void)* GetDSoundObj();
1760 
1761 		// MIDI制御関数
1762 
1763 		/**
1764 		 * リソース上のMIDIファイルからMIDIハンドルを作成する
1765 		 */
1766 		extern int LoadMusicMemByResource(const (dxlib_d.DxDataType.TCHAR)* ResourceName, const (dxlib_d.DxDataType.TCHAR)* ResourceType);
1767 
1768 		/**
1769 		 * リソース上のMIDIファイルからMIDIハンドルを作成する
1770 		 */
1771 		extern int LoadMusicMemByResourceWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ResourceName, size_t ResourceNameLength, const (dxlib_d.DxDataType.TCHAR)* ResourceType, size_t ResourceTypeLength);
1772 
1773 		/**
1774 		 * リソースからMIDIファイルを読み込んで演奏する
1775 		 */
1776 		extern int PlayMusicByResource(const (dxlib_d.DxDataType.TCHAR)* ResourceName, const (dxlib_d.DxDataType.TCHAR)* ResourceType, int PlayType);
1777 
1778 		/**
1779 		 * リソースからMIDIファイルを読み込んで演奏する
1780 		 */
1781 		extern int PlayMusicByResourceWithStrLen(const (dxlib_d.DxDataType.TCHAR)* ResourceName, size_t ResourceNameLength, const (dxlib_d.DxDataType.TCHAR)* ResourceType, size_t ResourceTypeLength, int PlayType);
1782 	}
1783 }