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