OSDN Git Service

#37175 JoyPadのキーアサインの表示の際に、項番が表示されない問題を修正。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 04.コンフィグ / CActConfigKeyAssign.cs
index f69e608..aa073ac 100644 (file)
@@ -4,19 +4,16 @@ using System.Text;
 using System.Runtime.InteropServices;\r
 using System.Drawing;\r
 using FDK;\r
-using SlimDX;\r
+using SharpDX;\r
+\r
+using Rectangle = System.Drawing.Rectangle;\r
+using Color = System.Drawing.Color;\r
+using SlimDXKey = SlimDX.DirectInput.Key;\r
 \r
 namespace DTXMania\r
 {\r
        internal class CActConfigKeyAssign : CActivity\r
        {\r
-               public CActConfigKeyAssign()\r
-               {\r
-               }\r
-\r
-\r
-               // プロパティ\r
-\r
                public bool bキー入力待ちの最中である\r
                {\r
                        get\r
@@ -25,22 +22,15 @@ namespace DTXMania
                        }\r
                }\r
 \r
-\r
-               // メソッド\r
-\r
-               public void t開始(EKeyConfigPart part, EKeyConfigPad pad, string strパッド名)\r
+               public void t開始(EPad pad, string strパッド名)\r
                {\r
-                       if (part != EKeyConfigPart.UNKNOWN)\r
+                       this.pad = pad;\r
+                       this.strパッド名 = strパッド名;\r
+                       for (int i = 0; i < CConfigXml.AssignableCodes - 2; i++)\r
                        {\r
-                               this.part = part;\r
-                               this.pad = pad;\r
-                               this.strパッド名 = strパッド名;\r
-                               for (int i = 0; i < 0x10; i++)\r
-                               {\r
-                                       this.structReset用KeyAssign[i].入力デバイス = CDTXMania.app.ConfigIni.KeyAssign[(int)part][(int)pad][i].入力デバイス;\r
-                                       this.structReset用KeyAssign[i].ID = CDTXMania.app.ConfigIni.KeyAssign[(int)part][(int)pad][i].ID;\r
-                                       this.structReset用KeyAssign[i].コード = CDTXMania.app.ConfigIni.KeyAssign[(int)part][(int)pad][i].コード;\r
-                               }\r
+                               this.structReset用KeyAssign[i].InputDevice = CDTXMania.Instance.ConfigIni.KeyAssign[pad][i].入力デバイス;\r
+                               this.structReset用KeyAssign[i].ID = CDTXMania.Instance.ConfigIni.KeyAssign[pad][i].ID;\r
+                               this.structReset用KeyAssign[i].Code = CDTXMania.Instance.ConfigIni.KeyAssign[pad][i].コード;\r
                        }\r
                }\r
 \r
@@ -48,203 +38,214 @@ namespace DTXMania
                {\r
                        if (!this.bキー入力待ち)\r
                        {\r
-                               CDTXMania.app.Skin.sound決定音.t再生する();\r
-                               switch (this.n現在の選択行)\r
+                               CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+                               if (ptr == CConfigXml.AssignableCodes - 2)\r
+                               {\r
+                                       for (int i = 0; i < CConfigXml.AssignableCodes - 2; i++)\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.KeyAssign[pad][i].CopyFrom(this.structReset用KeyAssign[i]);\r
+                                       }\r
+                                       return;\r
+                               }\r
+                               else if (ptr == CConfigXml.AssignableCodes - 1)\r
                                {\r
-                                       case 0x10:\r
-                                               for (int i = 0; i < 0x10; i++)\r
-                                               {\r
-                                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][i].入力デバイス = this.structReset用KeyAssign[i].入力デバイス;\r
-                                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][i].ID = this.structReset用KeyAssign[i].ID;\r
-                                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][i].コード = this.structReset用KeyAssign[i].コード;\r
-                                               }\r
-                                               return;\r
 \r
-                                       case 0x11:\r
-                                               CDTXMania.app.stageコンフィグ.tアサイン完了通知();\r
-                                               return;\r
+                                       CDTXMania.Instance.stageコンフィグ.tアサイン完了通知();\r
+                                       return;\r
                                }\r
                                this.bキー入力待ち = true;\r
                        }\r
                }\r
-               public void t次に移動()\r
+\r
+               public void OnNext()\r
                {\r
                        if (!this.bキー入力待ち)\r
                        {\r
-                               CDTXMania.app.Skin.soundカーソル移動音.t再生する();\r
-                               this.n現在の選択行 = (this.n現在の選択行 + 1) % 0x12;\r
+                               CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
+                               ptr++;\r
+                               ptr %= CConfigXml.AssignableCodes;\r
                        }\r
                }\r
-               public void t前に移動()\r
+\r
+               public void OnPrevious()\r
                {\r
                        if (!this.bキー入力待ち)\r
                        {\r
-                               CDTXMania.app.Skin.soundカーソル移動音.t再生する();\r
-                               this.n現在の選択行 = ((this.n現在の選択行 - 1) + 0x12) % 0x12;\r
+                               CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
+                               --ptr;\r
+                               ptr += CConfigXml.AssignableCodes;\r
+                               ptr %= CConfigXml.AssignableCodes;\r
                        }\r
                }\r
 \r
-\r
-               // CActivity 実装\r
-\r
                public override void On活性化()\r
                {\r
-                       this.part = EKeyConfigPart.UNKNOWN;\r
-                       this.pad = EKeyConfigPad.UNKNOWN;\r
-                       this.strパッド名 = "";\r
-                       this.n現在の選択行 = 0;\r
-                       this.bキー入力待ち = false;\r
-                       this.structReset用KeyAssign = new CConfigIni.CKeyAssign.STKEYASSIGN[0x10];\r
-                       base.On活性化();\r
+                       if (base.b活性化してない)\r
+                       {\r
+                               this.pad = EPad.Unknown;\r
+                               this.strパッド名 = "";\r
+                               this.ptr = 0;\r
+                               this.bキー入力待ち = false;\r
+                               this.structReset用KeyAssign = new CKeyAssign[CConfigXml.AssignableCodes - 2];\r
+                               for (int i = 0; i < this.structReset用KeyAssign.Length; ++i)\r
+                               {\r
+                                       structReset用KeyAssign[i] = new CKeyAssign(EInputDevice.Unknown, 0, 0);\r
+                               }\r
+\r
+                               base.On活性化();\r
+                       }\r
                }\r
+\r
                public override void On非活性化()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.txカーソル);\r
                                TextureFactory.tテクスチャの解放(ref this.txHitKeyダイアログ);\r
                                base.On非活性化();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
-                               this.prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y));     // t項目リストの設定 の前に必要\r
+                               this.prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y)); // t項目リストの設定 の前に必要\r
                                this.txカーソル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig menu cursor.png"), false);\r
                                this.txHitKeyダイアログ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig hit key to assign dialog.png"), false);\r
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
+\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       TextureFactory.t安全にDisposeする(ref prvFont);\r
+                       if (base.b活性化してる)\r
+                       {\r
+                               TextureFactory.t安全にDisposeする(ref prvFont);\r
+                       }\r
                }\r
+\r
                public override int On進行描画()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                if (this.bキー入力待ち)\r
                                {\r
-                                       if (CDTXMania.app.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape))\r
+                                       if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDXKey.Escape))\r
                                        {\r
-                                               CDTXMania.app.Skin.sound取消音.t再生する();\r
+                                               CDTXMania.Instance.Skin.sound取消音.t再生する();\r
                                                this.bキー入力待ち = false;\r
-                                               CDTXMania.app.Input管理.tポーリング(CDTXMania.app.bApplicationActive, false);\r
+                                               CDTXMania.Instance.Input管理.tポーリング(CDTXMania.Instance.bApplicationActive, false);\r
                                        }\r
                                        else if ((this.tキーチェックとアサイン_Keyboard() || this.tキーチェックとアサイン_MidiIn()) || (this.tキーチェックとアサイン_Joypad() || this.tキーチェックとアサイン_Mouse()))\r
                                        {\r
                                                this.bキー入力待ち = false;\r
-                                               CDTXMania.app.Input管理.tポーリング(CDTXMania.app.bApplicationActive, false);\r
+                                               CDTXMania.Instance.Input管理.tポーリング(CDTXMania.Instance.bApplicationActive, false);\r
                                        }\r
                                }\r
-                               else if ((CDTXMania.app.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Delete) && (this.n現在の選択行 >= 0)) && (this.n現在の選択行 <= 15))\r
+                               else if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDXKey.Delete))\r
                                {\r
-                                       CDTXMania.app.Skin.sound決定音.t再生する();\r
-                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].入力デバイス = E入力デバイス.不明;\r
-                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = 0;\r
-                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].コード = 0;\r
+                                       CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[this.pad][ptr].Reset();\r
                                }\r
+\r
                                if (this.txカーソル != null)\r
                                {\r
                                        int num = 20;\r
                                        int num2 = 0x144;\r
-                                       int num3 = 0x3e + (num * (this.n現在の選択行 + 1));\r
+                                       int num3 = 0x3e + (num * (ptr + 1));\r
                                        this.txカーソル.vc拡大縮小倍率 = new Vector3(1f, 0.75f, 1f);\r
-                                       this.txカーソル.t2D描画(CDTXMania.app.Device, num2 * Scale.X, num3 * Scale.Y - 6, new Rectangle(0, 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
+                                       this.txカーソル.t2D描画(CDTXMania.Instance.Device, num2 * Scale.X, num3 * Scale.Y - 6, new Rectangle(0, 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
                                        num2 += 0x10;\r
                                        Rectangle rectangle = new Rectangle((int)(8 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y));\r
                                        for (int j = 0; j < 14; j++)\r
                                        {\r
-                                               this.txカーソル.t2D描画(CDTXMania.app.Device, num2 * Scale.X, num3 * Scale.Y - 6, rectangle);\r
+                                               this.txカーソル.t2D描画(CDTXMania.Instance.Device, num2 * Scale.X, num3 * Scale.Y - 6, rectangle);\r
                                                num2 += 0x10;\r
                                        }\r
-                                       this.txカーソル.t2D描画(CDTXMania.app.Device, num2 * Scale.X, num3 * Scale.Y - 6, new Rectangle((int)(0x10 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
+                                       this.txカーソル.t2D描画(CDTXMania.Instance.Device, num2 * Scale.X, num3 * Scale.Y - 6, new Rectangle((int)(0x10 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
                                }\r
+\r
                                int num5 = 20;\r
                                int x = 0x134;\r
                                int y = 0x40;\r
-                               //CDTXMania.app.stageコンフィグ.actFont.t文字列描画( x, y, this.strパッド名, false, 0.75f );\r
-                               Bitmap bmpStr = prvFont.DrawPrivateFont(this.strパッド名, Color.White, Color.Black);\r
-                               CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr);\r
-                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                               txStr.t2D描画(CDTXMania.app.Device, x * Scale.X, y * Scale.Y - 20);\r
-                               TextureFactory.tテクスチャの解放(ref txStr);\r
-                               TextureFactory.t安全にDisposeする(ref txStr);\r
-                               TextureFactory.t安全にDisposeする(ref bmpStr);\r
+                               using (Bitmap bmpStr = prvFont.DrawPrivateFont(this.strパッド名, Color.White, Color.Black))\r
+                               {\r
+                                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr);\r
+                                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                                       txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
+                                       TextureFactory.tテクスチャの解放(ref txStr);\r
+                               }\r
 \r
                                y += num5;\r
-                               CConfigIni.CKeyAssign.STKEYASSIGN[] stkeyassignArray = CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad];\r
                                string strParam;\r
                                bool b強調;\r
-                               for (int i = 0; i < 0x10; i++)\r
+                               for (int i = 0; i < CConfigXml.AssignableCodes - 2; i++)\r
                                {\r
-                                       switch (stkeyassignArray[i].入力デバイス)\r
+                                       COptionKeyAssign stkeyassignArray = CDTXMania.Instance.ConfigIni.KeyAssign[this.pad][i];\r
+                                       switch (stkeyassignArray.入力デバイス)\r
                                        {\r
-                                               case E入力デバイス.キーボード:\r
-                                                       this.tアサインコードの描画_Keyboard(i + 1, x + 20, y, stkeyassignArray[i].ID, stkeyassignArray[i].コード, this.n現在の選択行 == i);\r
+                                               case EInputDevice.Keyboard:\r
+                                                       this.tアサインコードの描画_Keyboard(i + 1, x + 20, y, stkeyassignArray.ID, stkeyassignArray.コード, ptr == i);\r
                                                        break;\r
 \r
-                                               case E入力デバイス.MIDI入力:\r
-                                                       this.tアサインコードの描画_MidiIn(i + 1, x + 20, y, stkeyassignArray[i].ID, stkeyassignArray[i].コード, this.n現在の選択行 == i);\r
+                                               case EInputDevice.MIDIIn:\r
+                                                       this.tアサインコードの描画_MidiIn(i + 1, x + 20, y, stkeyassignArray.ID, stkeyassignArray.コード, ptr == i);\r
                                                        break;\r
 \r
-                                               case E入力デバイス.ジョイパッド:\r
-                                                       this.tアサインコードの描画_Joypad(i + 1, x + 20, y, stkeyassignArray[i].ID, stkeyassignArray[i].コード, this.n現在の選択行 == i);\r
+                                               case EInputDevice.JoyPad:\r
+                                                       this.tアサインコードの描画_Joypad(i + 1, x + 20, y, stkeyassignArray.ID, stkeyassignArray.コード, ptr == i);\r
                                                        break;\r
 \r
-                                               case E入力デバイス.マウス:\r
-                                                       this.tアサインコードの描画_Mouse(i + 1, x + 20, y, stkeyassignArray[i].ID, stkeyassignArray[i].コード, this.n現在の選択行 == i);\r
+                                               case EInputDevice.Mouse:\r
+                                                       this.tアサインコードの描画_Mouse(i + 1, x + 20, y, stkeyassignArray.ID, stkeyassignArray.コード, ptr == i);\r
                                                        break;\r
 \r
                                                default:\r
                                                        strParam = string.Format("{0,2}.", i + 1);\r
-                                                       b強調 = (this.n現在の選択行 == i);\r
-                                                       bmpStr = b強調 ?\r
-                                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black);\r
-                                                       txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                                                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                                                       txStr.t2D描画(CDTXMania.app.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
-                                                       TextureFactory.tテクスチャの解放(ref txStr);\r
-                                                       TextureFactory.t安全にDisposeする(ref txStr);\r
-                                                       TextureFactory.t安全にDisposeする(ref bmpStr);\r
-                                                       //CDTXMania.app.stageコンフィグ.actFont.t文字列描画( x + 20, y, string.Format( "{0,2}.", i + 1 ), this.n現在の選択行 == i, 0.75f );\r
+                                                       b強調 = (ptr == i);\r
+                                                       using (Bitmap bmpStr = b強調 ?\r
+                                                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))\r
+                                                       {\r
+                                                               CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                                                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                                                               txStr.t2D描画(CDTXMania.Instance.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
+                                                               TextureFactory.tテクスチャの解放(ref txStr);\r
+                                                       }\r
                                                        break;\r
                                        }\r
                                        y += num5;\r
                                }\r
-                               strParam = "Reset";\r
-                               b強調 = (this.n現在の選択行 == 0x10);\r
-                               bmpStr = b強調 ?\r
-                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black);\r
-                               txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                               txStr.t2D描画(CDTXMania.app.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
-                               TextureFactory.tテクスチャの解放(ref txStr);\r
-                               TextureFactory.t安全にDisposeする(ref txStr);\r
-                               TextureFactory.t安全にDisposeする(ref bmpStr);\r
+\r
+                               strParam = "Reset All Assign";\r
+                               b強調 = (ptr == CConfigXml.AssignableCodes - 2);\r
+                               using (Bitmap bmpStr = b強調 ?\r
+                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))\r
+                               {\r
+                                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                                       txStr.t2D描画(CDTXMania.Instance.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
+                                       TextureFactory.tテクスチャの解放(ref txStr);\r
+                               }\r
+\r
                                y += num5;\r
                                strParam = "<< Returnto List";\r
-                               b強調 = (this.n現在の選択行 == 0x11);\r
-                               bmpStr = b強調 ?\r
-                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                                       prvFont.DrawPrivateFont(strParam, Color.White, Color.Black);\r
-                               txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                               txStr.t2D描画(CDTXMania.app.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
-                               TextureFactory.tテクスチャの解放(ref txStr);\r
-                               TextureFactory.t安全にDisposeする(ref txStr);\r
-                               TextureFactory.t安全にDisposeする(ref bmpStr);\r
+                               b強調 = (ptr == CConfigXml.AssignableCodes - 1);\r
+                               using (Bitmap bmpStr = b強調 ?\r
+                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                               prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))\r
+                               {\r
+                                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                                       txStr.t2D描画(CDTXMania.Instance.Device, (x + 20) * Scale.X, y * Scale.Y - 20);\r
+                                       TextureFactory.tテクスチャの解放(ref txStr);\r
+                               }\r
 \r
-                               //CDTXMania.app.stageコンフィグ.actFont.t文字列描画( x + 20, y, "Reset", this.n現在の選択行 == 0x10, 0.75f );\r
-                               //y += num5;\r
-                               //CDTXMania.app.stageコンフィグ.actFont.t文字列描画( x + 20, y, "<< Returnto List", this.n現在の選択行 == 0x11, 0.75f );\r
-                               //y += num5;\r
                                if (this.bキー入力待ち && (this.txHitKeyダイアログ != null))\r
                                {\r
-                                       this.txHitKeyダイアログ.t2D描画(CDTXMania.app.Device, 0x185 * Scale.X, 0xd7 * Scale.Y);\r
+                                       this.txHitKeyダイアログ.t2D描画(CDTXMania.Instance.Device, 0x185 * Scale.X, 0xd7 * Scale.Y);\r
                                }\r
                        }\r
                        return 0;\r
@@ -252,9 +253,6 @@ namespace DTXMania
 \r
 \r
                // その他\r
-\r
-               #region [ private ]\r
-               //-----------------\r
                [StructLayout(LayoutKind.Sequential)]\r
                private struct STKEYLABEL\r
                {\r
@@ -268,21 +266,147 @@ namespace DTXMania
                }\r
 \r
                private bool bキー入力待ち;\r
-               private STKEYLABEL[] KeyLabel = new STKEYLABEL[] { \r
-                       new STKEYLABEL(0x35, "[ESC]"), new STKEYLABEL(1, "[ 1 ]"), new STKEYLABEL(2, "[ 2 ]"), new STKEYLABEL(3, "[ 3 ]"), new STKEYLABEL(4, "[ 4 ]"), new STKEYLABEL(5, "[ 5 ]"), new STKEYLABEL(6, "[ 6 ]"), new STKEYLABEL(7, "[ 7 ]"), new STKEYLABEL(8, "[ 8 ]"), new STKEYLABEL(9, "[ 9 ]"), new STKEYLABEL(0, "[ 0 ]"), new STKEYLABEL(0x53, "[ - ]"), new STKEYLABEL(0x34, "[ = ]"), new STKEYLABEL(0x2a, "[BSC]"), new STKEYLABEL(0x81, "[TAB]"), new STKEYLABEL(0x1a, "[ Q ]"), \r
-                       new STKEYLABEL(0x20, "[ W ]"), new STKEYLABEL(14, "[ E ]"), new STKEYLABEL(0x1b, "[ R ]"), new STKEYLABEL(0x1d, "[ T ]"), new STKEYLABEL(0x22, "[ Y ]"), new STKEYLABEL(30, "[ U ]"), new STKEYLABEL(0x12, "[ I ]"), new STKEYLABEL(0x18, "[ O ]"), new STKEYLABEL(0x19, "[ P ]"), new STKEYLABEL(0x4a, "[ [ ]"), new STKEYLABEL(0x73, "[ ] ]"), new STKEYLABEL(0x75, "[Enter]"), new STKEYLABEL(0x4b, "[L-Ctrl]"), new STKEYLABEL(10, "[ A ]"), new STKEYLABEL(0x1c, "[ S ]"), new STKEYLABEL(13, "[ D ]"), \r
-                       new STKEYLABEL(15, "[ F ]"), new STKEYLABEL(0x10, "[ G ]"), new STKEYLABEL(0x11, "[ H ]"), new STKEYLABEL(0x13, "[ J ]"), new STKEYLABEL(20, "[ K ]"), new STKEYLABEL(0x15, "[ L ]"), new STKEYLABEL(0x7b, "[ ; ]"), new STKEYLABEL(0x26, "[ ' ]"), new STKEYLABEL(0x45, "[ ` ]"), new STKEYLABEL(0x4e, "[L-Shift]"), new STKEYLABEL(0x2b, @"[ \]"), new STKEYLABEL(0x23, "[ Z ]"), new STKEYLABEL(0x21, "[ X ]"), new STKEYLABEL(12, "[ C ]"), new STKEYLABEL(0x1f, "[ V ]"), new STKEYLABEL(11, "[ B ]"), \r
-                       new STKEYLABEL(0x17, "[ N ]"), new STKEYLABEL(0x16, "[ M ]"), new STKEYLABEL(0x2f, "[ , ]"), new STKEYLABEL(0x6f, "[ . ]"), new STKEYLABEL(0x7c, "[ / ]"), new STKEYLABEL(120, "[R-Shift]"), new STKEYLABEL(0x6a, "[ * ]"), new STKEYLABEL(0x4d, "[L-Alt]"), new STKEYLABEL(0x7e, "[Space]"), new STKEYLABEL(0x2d, "[CAPS]"), new STKEYLABEL(0x36, "[F1]"), new STKEYLABEL(0x37, "[F2]"), new STKEYLABEL(0x38, "[F3]"), new STKEYLABEL(0x39, "[F4]"), new STKEYLABEL(0x3a, "[F5]"), new STKEYLABEL(0x3b, "[F6]"), \r
-                       new STKEYLABEL(60, "[F7]"), new STKEYLABEL(0x3d, "[F8]"), new STKEYLABEL(0x3e, "[F9]"), new STKEYLABEL(0x3f, "[F10]"), new STKEYLABEL(0x58, "[NumLock]"), new STKEYLABEL(0x7a, "[Scroll]"), new STKEYLABEL(0x60, "[NPad7]"), new STKEYLABEL(0x61, "[NPad8]"), new STKEYLABEL(0x62, "[NPad9]"), new STKEYLABEL(0x66, "[NPad-]"), new STKEYLABEL(0x5d, "[NPad4]"), new STKEYLABEL(0x5e, "[NPad5]"), new STKEYLABEL(0x5f, "[NPad6]"), new STKEYLABEL(0x68, "[NPad+]"), new STKEYLABEL(90, "[NPad1]"), new STKEYLABEL(0x5b, "[NPad2]"), \r
-                       new STKEYLABEL(0x5c, "[NPad3]"), new STKEYLABEL(0x59, "[NPad0]"), new STKEYLABEL(0x67, "[NPad.]"), new STKEYLABEL(0x40, "[F11]"), new STKEYLABEL(0x41, "[F12]"), new STKEYLABEL(0x42, "[F13]"), new STKEYLABEL(0x43, "[F14]"), new STKEYLABEL(0x44, "[F15]"), new STKEYLABEL(0x48, "[Kana]"), new STKEYLABEL(0x24, "[ ? ]"), new STKEYLABEL(0x30, "[Henkan]"), new STKEYLABEL(0x57, "[MuHenkan]"), new STKEYLABEL(0x8f, @"[ \ ]"), new STKEYLABEL(0x25, "[NPad.]"), new STKEYLABEL(0x65, "[NPad=]"), new STKEYLABEL(0x72, "[ ^ ]"), \r
-                       new STKEYLABEL(40, "[ @ ]"), new STKEYLABEL(0x2e, "[ : ]"), new STKEYLABEL(130, "[ _ ]"), new STKEYLABEL(0x49, "[Kanji]"), new STKEYLABEL(0x7f, "[Stop]"), new STKEYLABEL(0x29, "[AX]"), new STKEYLABEL(100, "[NPEnter]"), new STKEYLABEL(0x74, "[R-Ctrl]"), new STKEYLABEL(0x54, "[Mute]"), new STKEYLABEL(0x2c, "[Calc]"), new STKEYLABEL(0x70, "[PlayPause]"), new STKEYLABEL(0x52, "[MediaStop]"), new STKEYLABEL(0x85, "[Volume-]"), new STKEYLABEL(0x86, "[Volume+]"), new STKEYLABEL(0x8b, "[WebHome]"), new STKEYLABEL(0x63, "[NPad,]"), \r
-                       new STKEYLABEL(0x69, "[ / ]"), new STKEYLABEL(0x80, "[PrtScn]"), new STKEYLABEL(0x77, "[R-Alt]"), new STKEYLABEL(110, "[Pause]"), new STKEYLABEL(70, "[Home]"), new STKEYLABEL(0x84, "[Up]"), new STKEYLABEL(0x6d, "[PageUp]"), new STKEYLABEL(0x4c, "[Left]"), new STKEYLABEL(0x76, "[Right]"), new STKEYLABEL(0x33, "[End]"), new STKEYLABEL(50, "[Down]"), new STKEYLABEL(0x6c, "[PageDown]"), new STKEYLABEL(0x47, "[Insert]"), new STKEYLABEL(0x31, "[Delete]"), new STKEYLABEL(0x4f, "[L-Win]"), new STKEYLABEL(0x79, "[R-Win]"), \r
-                       new STKEYLABEL(0x27, "[APP]"), new STKEYLABEL(0x71, "[Power]"), new STKEYLABEL(0x7d, "[Sleep]"), new STKEYLABEL(0x87, "[Wake]")\r
+\r
+               private STKEYLABEL[] KeyLabel = new STKEYLABEL[] {\r
+                       #region [ *** ]\r
+                       new STKEYLABEL((int)SlimDXKey.Escape, "[ESC]"),\r
+                       new STKEYLABEL((int)SlimDXKey.D1, "[ 1 ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.D2, "[ 2 ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.D3, "[ 3 ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.D4, "[ 4 ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.D5, "[ 5 ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.D6, "[ 6 ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.D7, "[ 7 ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.D8, "[ 8 ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.D9, "[ 9 ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.D0, "[ 0 ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Minus, "[ - ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Equals, "[ = ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Backspace, "[BSC]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Tab, "[TAB]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Q, "[ Q ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.W, "[ W ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.E, "[ E ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.R, "[ R ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.T, "[ T ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Y, "[ Y ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.U, "[ U ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.I, "[ I ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.O, "[ O ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.P, "[ P ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.LeftBracket, "[ [ ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.RightBracket, "[ ] ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Return, "[Enter]"),\r
+                       new STKEYLABEL((int)SlimDXKey.LeftControl, "[L-Ctrl]"),\r
+                       new STKEYLABEL((int)SlimDXKey.A, "[ A ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.S, "[ S ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.D, "[ D ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F, "[ F ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.G, "[ G ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.H, "[ H ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.J, "[ J ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.K, "[ K ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.L, "[ L ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Semicolon, "[ ; ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Apostrophe, "[ ' ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Grave, "[ ` ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.LeftShift, "[L-Shift]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Backslash, @"[ \]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Z, "[ Z ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.X, "[ X ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.C, "[ C ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.V, "[ V ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.B, "[ B ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.N, "[ N ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.M, "[ M ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Comma, "[ , ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Period, "[ . ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Slash, "[ / ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.RightShift, "[R-Shift]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPadStar, "[ * ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.LeftAlt, "[L-Alt]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Space, "[Space]"),\r
+                       new STKEYLABEL((int)SlimDXKey.CapsLock, "[CAPS]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F1, "[F1]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F2, "[F2]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F3, "[F3]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F4, "[F4]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F5, "[F5]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F6, "[F6]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F7, "[F7]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F8, "[F8]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F9, "[F9]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F10, "[F10]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberLock, "[NumLock]"),\r
+                       new STKEYLABEL((int)SlimDXKey.ScrollLock, "[Scroll]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPad7, "[NPad7]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPad8, "[NPad8]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPad9, "[NPad9]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPadMinus, "[NPad-]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPad4, "[NPad4]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPad5, "[NPad5]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPad6, "[NPad6]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPadPlus, "[NPad+]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPad1, "[NPad1]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPad2, "[NPad2]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPad3, "[NPad3]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPad0, "[NPad0]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPadPeriod, "[NPad.]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F11, "[F11]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F12, "[F12]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F13, "[F13]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F14, "[F14]"),\r
+                       new STKEYLABEL((int)SlimDXKey.F15, "[F15]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Kana, "[Kana]"),\r
+                       new STKEYLABEL((int)SlimDXKey.AbntC1, "[ ? ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Convert, "[Henkan]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NoConvert, "[MuHenkan]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Backslash, @"[ \ ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.AbntC2, "[NPad.]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPadEquals, "[NPad=]"),\r
+                       new STKEYLABEL((int)SlimDXKey.PreviousTrack, "[ ^ ]"),  // DIK_CIRCUMFLEX = 0x90\r
+                       new STKEYLABEL((int)SlimDXKey.AT, "[ @ ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Colon, "[ : ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Underline, "[ _ ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Kanji, "[Kanji]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Stop, "[Stop]"),\r
+                       new STKEYLABEL((int)SlimDXKey.AX, "[AX]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPadEnter, "[NPEnter]"),\r
+                       new STKEYLABEL((int)SlimDXKey.RightControl, "[R-Ctrl]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Mute, "[Mute]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Calculator, "[Calc]"),\r
+                       new STKEYLABEL((int)SlimDXKey.PlayPause, "[PlayPause]"),\r
+                       new STKEYLABEL((int)SlimDXKey.MediaStop, "[MediaStop]"),\r
+                       new STKEYLABEL((int)SlimDXKey.VolumeDown, "[Volume-]"),\r
+                       new STKEYLABEL((int)SlimDXKey.VolumeUp, "[Volume+]"),\r
+                       new STKEYLABEL((int)SlimDXKey.WebHome, "[WebHome]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPadComma, "[NPad,]"),\r
+                       new STKEYLABEL((int)SlimDXKey.NumberPadSlash, "[ / ]"),\r
+                       new STKEYLABEL((int)SlimDXKey.PrintScreen, "[PrtScn]"),\r
+                       new STKEYLABEL((int)SlimDXKey.RightAlt, "[R-Alt]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Pause, "[Pause]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Home, "[Home]"),\r
+                       new STKEYLABEL((int)SlimDXKey.UpArrow, "[Up]"),\r
+                       new STKEYLABEL((int)SlimDXKey.PageUp, "[PageUp]"),\r
+                       new STKEYLABEL((int)SlimDXKey.LeftArrow, "[Left]"),\r
+                       new STKEYLABEL((int)SlimDXKey.RightArrow, "[Right]"),\r
+                       new STKEYLABEL((int)SlimDXKey.End, "[End]"),\r
+                       new STKEYLABEL((int)SlimDXKey.DownArrow, "[Down]"),\r
+                       new STKEYLABEL((int)SlimDXKey.PageDown, "[PageDown]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Insert, "[Insert]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Delete, "[Delete]"),\r
+                       new STKEYLABEL((int)SlimDXKey.LeftWindowsKey, "[L-Win]"),\r
+                       new STKEYLABEL((int)SlimDXKey.RightWindowsKey, "[R-Win]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Applications, "[APP]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Power, "[Power]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Sleep, "[Sleep]"),\r
+                       new STKEYLABEL((int)SlimDXKey.Wake, "[Wake]"),\r
+                       #endregion\r
                };\r
-               private int n現在の選択行;\r
-               private EKeyConfigPad pad;\r
-               private EKeyConfigPart part;\r
-               private CConfigIni.CKeyAssign.STKEYASSIGN[] structReset用KeyAssign;\r
+\r
+               private EPad pad;\r
+               int ptr;\r
+               private CKeyAssign[] structReset用KeyAssign;\r
                private string strパッド名;\r
                private CTexture txHitKeyダイアログ;\r
                private CTexture txカーソル;\r
@@ -290,59 +414,59 @@ namespace DTXMania
 \r
                private void tアサインコードの描画_Joypad(int line, int x, int y, int nID, int nCode, bool b強調)\r
                {\r
-                       string str = "";\r
+                       string str = string.Format("{0,2}. ", line);\r
                        switch (nCode)\r
                        {\r
                                case 0:\r
-                                       str = "Left";\r
+                                       str += "Left";\r
                                        break;\r
 \r
                                case 1:\r
-                                       str = "Right";\r
+                                       str += "Right";\r
                                        break;\r
 \r
                                case 2:\r
-                                       str = "Up";\r
+                                       str += "Up";\r
                                        break;\r
 \r
                                case 3:\r
-                                       str = "Down";\r
+                                       str += "Down";\r
                                        break;\r
 \r
                                case 4:\r
-                                       str = "Forward";\r
+                                       str += "Forward";\r
                                        break;\r
 \r
                                case 5:\r
-                                       str = "Back";\r
+                                       str += "Back";\r
                                        break;\r
 \r
                                default:\r
-                                       if ((6 <= nCode) && (nCode < 6 + 128))                          // other buttons (128 types)\r
+                                       if ((6 <= nCode) && (nCode < 6 + 128))              // other buttons (128 types)\r
                                        {\r
-                                               str = string.Format("Button{0}", nCode - 5);\r
+                                               str += string.Format("Button{0}", nCode - 5);\r
                                        }\r
-                                       else if ((6 + 128 <= nCode) && (nCode < 6 + 128 + 8))           // POV HAT ( 8 types; 45 degrees per HATs)\r
+                                       else if ((6 + 128 <= nCode) && (nCode < 6 + 128 + 8))       // POV HAT ( 8 types; 45 degrees per HATs)\r
                                        {\r
-                                               str = string.Format("POV {0}", (nCode - 6 - 128) * 45);\r
+                                               str += string.Format("POV {0}", (nCode - 6 - 128) * 45);\r
                                        }\r
                                        else\r
                                        {\r
-                                               str = string.Format("Code{0}", nCode);\r
+                                               str += string.Format("Code{0}", nCode);\r
                                        }\r
                                        break;\r
                        }\r
-                       Bitmap bmpStr = b強調 ?\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black);\r
-                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                       txStr.t2D描画(CDTXMania.app.Device, x * Scale.X, y * Scale.Y - 20);\r
-                       TextureFactory.tテクスチャの解放(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref bmpStr);\r
-                       //                      CDTXMania.app.stageコンフィグ.actFont.t文字列描画( x, y, string.Format( "{0,2}. Joypad #{1} ", line, nID ) + str, b強調, 0.75f );\r
+                       using (Bitmap bmpStr = b強調 ?\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black))\r
+                       {\r
+                               CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                               txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
+                               TextureFactory.tテクスチャの解放(ref txStr);\r
+                       }\r
                }\r
+\r
                private void tアサインコードの描画_Keyboard(int line, int x, int y, int nID, int nCode, bool b強調)\r
                {\r
                        string str = null;\r
@@ -359,60 +483,60 @@ namespace DTXMania
                                str = string.Format("{0,2}. Key 0x{1:X2}", line, nCode);\r
                        }\r
 \r
-                       Bitmap bmpStr = b強調 ?\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black);\r
-                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                       txStr.t2D描画(CDTXMania.app.Device, x * Scale.X, y * Scale.Y - 20);\r
-                       TextureFactory.tテクスチャの解放(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref bmpStr);\r
-                       //CDTXMania.app.stageコンフィグ.actFont.t文字列描画( x, y, str, b強調, 0.75f );\r
+                       using (Bitmap bmpStr = b強調 ?\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black))\r
+                       {\r
+                               CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                               txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
+                               TextureFactory.tテクスチャの解放(ref txStr);\r
+                       }\r
                }\r
+\r
                private void tアサインコードの描画_MidiIn(int line, int x, int y, int nID, int nCode, bool b強調)\r
                {\r
                        string str = string.Format("{0,2}. MidiIn #{1} code.{2}", line, nID, nCode);\r
-                       Bitmap bmpStr = b強調 ?\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black);\r
-                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                       txStr.t2D描画(CDTXMania.app.Device, x * Scale.X, y * Scale.Y - 20);\r
-                       TextureFactory.tテクスチャの解放(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref bmpStr);\r
-                       //CDTXMania.app.stageコンフィグ.actFont.t文字列描画( x, y, string.Format( "{0,2}. MidiIn #{1} code.{2}", line, nID, nCode ), b強調, 0.75f );\r
+                       using (Bitmap bmpStr = b強調 ?\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black))\r
+                       {\r
+                               CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                               txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
+                               TextureFactory.tテクスチャの解放(ref txStr);\r
+                       }\r
                }\r
+\r
                private void tアサインコードの描画_Mouse(int line, int x, int y, int nID, int nCode, bool b強調)\r
                {\r
                        string str = string.Format("{0,2}. Mouse Button{1}", line, nCode);\r
-                       Bitmap bmpStr = b強調 ?\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
-                               prvFont.DrawPrivateFont(str, Color.White, Color.Black);\r
-                       CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
-                       txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
-                       txStr.t2D描画(CDTXMania.app.Device, x * Scale.X, y * Scale.Y - 20);\r
-                       TextureFactory.tテクスチャの解放(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref txStr);\r
-                       TextureFactory.t安全にDisposeする(ref bmpStr);\r
-                       //CDTXMania.app.stageコンフィグ.actFont.t文字列描画( x, y, string.Format( "{0,2}. Mouse Button{1}", line, nCode ), b強調, 0.75f );\r
+                       using (Bitmap bmpStr = b強調 ?\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) :\r
+                                       prvFont.DrawPrivateFont(str, Color.White, Color.Black))\r
+                       {\r
+                               CTexture txStr = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                               txStr.vc拡大縮小倍率 = new Vector3(0.75f, 0.75f, 1f);\r
+                               txStr.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y - 20);\r
+                               TextureFactory.tテクスチャの解放(ref txStr);\r
+                       }\r
                }\r
+\r
                private bool tキーチェックとアサイン_Joypad()\r
                {\r
-                       foreach (IInputDevice device in CDTXMania.app.Input管理.list入力デバイス)\r
+                       foreach (IInputDevice device in CDTXMania.Instance.Input管理.list入力デバイス)\r
                        {\r
                                if (device.e入力デバイス種別 == E入力デバイス種別.Joystick)\r
                                {\r
-                                       for (int i = 0; i < 6 + 0x80 + 8; i++)          // +6 for Axis, +8 for HAT\r
+                                       for (int i = 0; i < 6 + 0x80 + 8; i++)      // +6 for Axis, +8 for HAT\r
                                        {\r
                                                if (device.bキーが押された(i))\r
                                                {\r
-                                                       CDTXMania.app.Skin.sound決定音.t再生する();\r
-                                                       CDTXMania.app.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(E入力デバイス.ジョイパッド, device.ID, i);\r
-                                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].入力デバイス = E入力デバイス.ジョイパッド;\r
-                                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = device.ID;\r
-                                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].コード = i;\r
+                                                       CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+                                                       CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.JoyPad, device.ID, i);\r
+                                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].入力デバイス = EInputDevice.JoyPad;\r
+                                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].ID = device.ID;\r
+                                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].コード = i;\r
                                                        return true;\r
                                                }\r
                                        }\r
@@ -420,31 +544,39 @@ namespace DTXMania
                        }\r
                        return false;\r
                }\r
+\r
                private bool tキーチェックとアサイン_Keyboard()\r
                {\r
-                       for (int i = 0; i < 0x100; i++)\r
+                       for( int i = 0; i < 256; i++ )\r
                        {\r
-                               if (i != (int)SlimDX.DirectInput.Key.Escape &&\r
-                                       i != (int)SlimDX.DirectInput.Key.UpArrow &&\r
-                                       i != (int)SlimDX.DirectInput.Key.DownArrow &&\r
-                                       i != (int)SlimDX.DirectInput.Key.LeftArrow &&\r
-                                       i != (int)SlimDX.DirectInput.Key.RightArrow &&\r
-                                       i != (int)SlimDX.DirectInput.Key.Delete &&\r
-                                        CDTXMania.app.Input管理.Keyboard.bキーが押された(i))\r
+                               if( i != (int) SlimDXKey.Escape &&\r
+                                       i != (int) SlimDXKey.UpArrow &&\r
+                                       i != (int) SlimDXKey.DownArrow &&\r
+                                       i != (int) SlimDXKey.LeftArrow &&\r
+                                       i != (int) SlimDXKey.RightArrow &&\r
+                                       i != (int) SlimDXKey.Delete &&\r
+                                        CDTXMania.Instance.Input管理.Keyboard.bキーが押された( i ) )\r
                                {\r
-                                       CDTXMania.app.Skin.sound決定音.t再生する();\r
-                                       CDTXMania.app.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(E入力デバイス.キーボード, 0, i);\r
-                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].入力デバイス = E入力デバイス.キーボード;\r
-                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = 0;\r
-                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].コード = i;\r
+                                       CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+\r
+                                       // #xxxxx: 2017.5.7 from: アサイン済みのキーと今回割り当てるキーが同じである場合は、削除されないようコードを未使用値(ここでは-1)にする。\r
+                                       if( i == CDTXMania.Instance.ConfigIni.KeyAssign[ pad ][ ptr ].コード )\r
+                                               CDTXMania.Instance.ConfigIni.KeyAssign[ pad ][ ptr ].コード = -1;\r
+\r
+                                       CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する( EInputDevice.Keyboard, 0, i );\r
+\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[ pad ][ ptr ].入力デバイス = EInputDevice.Keyboard;\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[ pad ][ ptr ].ID = 0;\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[ pad ][ ptr ].コード = i;\r
                                        return true;\r
                                }\r
                        }\r
                        return false;\r
                }\r
+\r
                private bool tキーチェックとアサイン_MidiIn()\r
                {\r
-                       foreach (IInputDevice device in CDTXMania.app.Input管理.list入力デバイス)\r
+                       foreach (IInputDevice device in CDTXMania.Instance.Input管理.list入力デバイス)\r
                        {\r
                                if (device.e入力デバイス種別 == E入力デバイス種別.MidiIn)\r
                                {\r
@@ -452,11 +584,11 @@ namespace DTXMania
                                        {\r
                                                if (device.bキーが押された(i))\r
                                                {\r
-                                                       CDTXMania.app.Skin.sound決定音.t再生する();\r
-                                                       CDTXMania.app.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(E入力デバイス.MIDI入力, device.ID, i);\r
-                                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].入力デバイス = E入力デバイス.MIDI入力;\r
-                                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = device.ID;\r
-                                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].コード = i;\r
+                                                       CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+                                                       CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.MIDIIn, device.ID, i);\r
+                                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].入力デバイス = EInputDevice.MIDIIn;\r
+                                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].ID = device.ID;\r
+                                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].コード = i;\r
                                                        return true;\r
                                                }\r
                                        }\r
@@ -464,21 +596,20 @@ namespace DTXMania
                        }\r
                        return false;\r
                }\r
+\r
                private bool tキーチェックとアサイン_Mouse()\r
                {\r
                        for (int i = 0; i < 8; i++)\r
                        {\r
-                               if (CDTXMania.app.Input管理.Mouse.bキーが押された(i))\r
+                               if (CDTXMania.Instance.Input管理.Mouse.bキーが押された(i))\r
                                {\r
-                                       CDTXMania.app.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(E入力デバイス.マウス, 0, i);\r
-                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].入力デバイス = E入力デバイス.マウス;\r
-                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].ID = 0;\r
-                                       CDTXMania.app.ConfigIni.KeyAssign[(int)this.part][(int)this.pad][this.n現在の選択行].コード = i;\r
+                                       CDTXMania.Instance.ConfigIni.t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice.Mouse, 0, i);\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].入力デバイス = EInputDevice.Mouse;\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].ID = 0;\r
+                                       CDTXMania.Instance.ConfigIni.KeyAssign[pad][ptr].コード = i;\r
                                }\r
                        }\r
                        return false;\r
                }\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r