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 }