修订版 | 2c62bbce079b7c079baa3b293a97a80de0af9c48 (tree) |
---|---|
时间 | 2018-02-06 01:23:14 |
作者 | yyagi <yyagi.dtxmania@gmai...> |
Commiter | yyagi |
#37946 MidiInChecker2: MIDIイベントごとの仮色分け, 正しいタイムスタンプを表示するよう修正, タイトルバーにリリース番号を表示,
@@ -29,20 +29,14 @@ | ||
29 | 29 | private void InitializeComponent() |
30 | 30 | { |
31 | 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form_Main)); |
32 | - this.LogTextBox = new System.Windows.Forms.TextBox(); | |
33 | 32 | this.menuStrip1 = new System.Windows.Forms.MenuStrip(); |
34 | 33 | this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); |
35 | 34 | this.exitToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); |
36 | 35 | this.buttonOK = new System.Windows.Forms.Button(); |
36 | + this.RichLogTextBox = new System.Windows.Forms.RichTextBox(); | |
37 | 37 | this.menuStrip1.SuspendLayout(); |
38 | 38 | this.SuspendLayout(); |
39 | 39 | // |
40 | - // LogTextBox | |
41 | - // | |
42 | - resources.ApplyResources(this.LogTextBox, "LogTextBox"); | |
43 | - this.LogTextBox.Name = "LogTextBox"; | |
44 | - this.LogTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.LogTextBox_KeyDown); | |
45 | - // | |
46 | 40 | // menuStrip1 |
47 | 41 | // |
48 | 42 | this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { |
@@ -70,16 +64,22 @@ | ||
70 | 64 | this.buttonOK.UseVisualStyleBackColor = true; |
71 | 65 | this.buttonOK.Click += new System.EventHandler(this.button1_Click); |
72 | 66 | // |
67 | + // RichLogTextBox | |
68 | + // | |
69 | + resources.ApplyResources(this.RichLogTextBox, "RichLogTextBox"); | |
70 | + this.RichLogTextBox.Name = "RichLogTextBox"; | |
71 | + // | |
73 | 72 | // Form_Main |
74 | 73 | // |
75 | 74 | resources.ApplyResources(this, "$this"); |
76 | 75 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; |
76 | + this.Controls.Add(this.RichLogTextBox); | |
77 | 77 | this.Controls.Add(this.buttonOK); |
78 | 78 | this.Controls.Add(this.menuStrip1); |
79 | - this.Controls.Add(this.LogTextBox); | |
80 | 79 | this.MainMenuStrip = this.menuStrip1; |
81 | 80 | this.Name = "Form_Main"; |
82 | 81 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form_Main_FormClosing); |
82 | + this.Shown += new System.EventHandler(this.Form_Main_Shown); | |
83 | 83 | this.menuStrip1.ResumeLayout(false); |
84 | 84 | this.menuStrip1.PerformLayout(); |
85 | 85 | this.ResumeLayout(false); |
@@ -88,12 +88,11 @@ | ||
88 | 88 | } |
89 | 89 | |
90 | 90 | #endregion |
91 | - | |
92 | - private System.Windows.Forms.TextBox LogTextBox; | |
93 | 91 | private System.Windows.Forms.MenuStrip menuStrip1; |
94 | 92 | private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; |
95 | 93 | private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem1; |
96 | 94 | private System.Windows.Forms.Button buttonOK; |
95 | + private System.Windows.Forms.RichTextBox RichLogTextBox; | |
97 | 96 | } |
98 | 97 | } |
99 | 98 |
@@ -15,19 +15,28 @@ namespace MidiInChecker2 | ||
15 | 15 | CInputManager InputManager; |
16 | 16 | System.Threading.Timer timer; |
17 | 17 | object lockobj = new object(); |
18 | - int looptimes = 10; | |
18 | + int looptimes = 11; | |
19 | + | |
20 | + private void Form_Main_Shown(object sender, EventArgs e) | |
21 | + { | |
22 | + #region [ タイトルバーの設定 ] | |
23 | + System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); | |
24 | + int ver_asm_major = asm.GetName().Version.Major; | |
25 | + this.Text = "MidiInChecker2 Rel" + ver_asm_major.ToString("D3"); | |
26 | + #endregion | |
27 | + } | |
19 | 28 | |
20 | 29 | public Form_Main() |
21 | 30 | { |
22 | 31 | InitializeComponent(); |
23 | 32 | InputManager = new CInputManager(); |
24 | 33 | |
25 | - LogTextBox.AppendText( "Number of MIDI devices: " + InputManager.nInputMidiDevices + "\r\n" ); | |
34 | + RichLogTextBox.AppendText( "Number of MIDI devices: " + InputManager.nInputMidiDevices + "\r\n" ); | |
26 | 35 | foreach ( string s in InputManager.listStrMidiDevices ) |
27 | 36 | { |
28 | - LogTextBox.AppendText( s + "\r\n" ); | |
37 | + RichLogTextBox.AppendText( s + "\r\n" ); | |
29 | 38 | } |
30 | - LogTextBox.AppendText( "\r\nHit any MIDI Pad to show the signal info.\r\n\r\n\n" ); | |
39 | + RichLogTextBox.AppendText( "\r\nHit any MIDI Pad to show the signal info.\r\n\r\n\n" ); | |
31 | 40 | |
32 | 41 | #region [タイマーで0.1秒ごとにログ画面を更新するように初期化する] |
33 | 42 | TimerCallback timerDelegate = new TimerCallback(mainloop); |
@@ -50,33 +59,64 @@ namespace MidiInChecker2 | ||
50 | 59 | { |
51 | 60 | foreach ( STInputEvent ev in device.list入力イベント ) |
52 | 61 | { |
53 | - int nMIDIevent = ev.nKey & 0xFF; | |
54 | - int nNote = ( ev.nKey >> 8 ) & 0xFF; // note# | |
55 | - // int nVelo = ( ev.nKey >> 16 ) & 0xFF; // velocity | |
56 | - | |
57 | - string s = DateTime.Now.ToString( "hh:mm:ss.fff" ) + | |
58 | - ": Device=" + device.ID + | |
59 | - ", MIDIevent=0x" + nMIDIevent.ToString( "X2" ) + | |
60 | - ", Note#=0x" + nNote.ToString( "X2" ) + | |
61 | - ", Velocity=" + ev.nVelocity.ToString( "D3" ) + | |
62 | - | |
63 | - "\r\n"; | |
64 | - Invoke( new AppendTextDelegate( appendLogText ), s ); | |
62 | + Invoke( new AppendTextDelegate( appendLogText ), device.ID, ev); | |
65 | 63 | looptimes = 0; |
66 | 64 | } |
67 | 65 | } |
68 | 66 | } |
69 | 67 | if (looptimes++ == 10) // 10回ループ(1秒間)の間に入力がなければ、空行を挿入する。 |
70 | 68 | { |
71 | - Invoke(new AppendTextDelegate( appendLogText ), "------------------------------------------------------------\r\n"); | |
69 | + Invoke(new AppendTextDelegate( appendLogText ), -1, new STInputEvent() ); | |
72 | 70 | } |
73 | 71 | } |
74 | 72 | } |
75 | 73 | |
76 | - delegate void AppendTextDelegate( string text ); | |
77 | - private void appendLogText( string text ) | |
74 | + delegate void AppendTextDelegate( int id, STInputEvent ev ); | |
75 | + private void appendLogText( int id, STInputEvent ev ) | |
78 | 76 | { |
79 | - LogTextBox.AppendText( text ); | |
77 | + string text; | |
78 | + | |
79 | + if (id == -1) | |
80 | + { | |
81 | + RichLogTextBox.SelectionColor = Color.Black; // reset color | |
82 | + text = "------------------------------------------------------------\r\n"; | |
83 | + } | |
84 | + else | |
85 | + { | |
86 | + int nMIDIevent = ev.nKey & 0xFF; | |
87 | + int nNote = (ev.nKey >> 8) & 0xFF; // note# | |
88 | + // int nVelo = ( ev.nKey >> 16 ) & 0xFF; // velocity | |
89 | + | |
90 | + DateTime dt = new DateTime(ev.nTimeStamp); | |
91 | + | |
92 | + text = dt.ToString("hh:mm:ss.fff") + | |
93 | + ": Device=" + id + | |
94 | + ", MidiEvent=0x" + nMIDIevent.ToString("X2") + | |
95 | + ", Note#=0x" + nNote.ToString("X2") + | |
96 | + ", Velocity=" + ev.nVelocity.ToString("D3") + | |
97 | + "\r\n"; | |
98 | + | |
99 | + Color[] cMidiEvent = | |
100 | + { | |
101 | + Color.Gray, // 0x8x Note Off | |
102 | + Color.Black, // 0x9x Note On | |
103 | + Color.Black, // 0xAx | |
104 | + Color.Green, // 0xBx Control change | |
105 | + Color.Black, // 0xCx | |
106 | + Color.Black, // 0xDx | |
107 | + Color.Blue, // 0xEx Pitch bend | |
108 | + Color.Black, // 0xFx | |
109 | + }; | |
110 | + Color c = cMidiEvent[(nMIDIevent >> 4) - 8]; | |
111 | + if ( (nMIDIevent & 0xF0) == 0x90 && (ev.nVelocity == 0) ) | |
112 | + { | |
113 | + c = cMidiEvent[0]; // Note off color | |
114 | + } | |
115 | + RichLogTextBox.SelectionColor = c; | |
116 | + } | |
117 | + RichLogTextBox.Focus(); | |
118 | + RichLogTextBox.AppendText( text ); | |
119 | + RichLogTextBox.SelectionColor = Color.Black; // reset color | |
80 | 120 | } |
81 | 121 | |
82 | 122 | // ダサい。後日改善予定。 |
@@ -113,7 +153,7 @@ namespace MidiInChecker2 | ||
113 | 153 | { |
114 | 154 | if ( e.KeyCode == System.Windows.Forms.Keys.A & e.Control == true ) |
115 | 155 | { |
116 | - LogTextBox.SelectAll(); | |
156 | + RichLogTextBox.SelectAll(); | |
117 | 157 | } |
118 | 158 | } |
119 | 159 | } |
@@ -117,48 +117,10 @@ | ||
117 | 117 | <resheader name="writer"> |
118 | 118 | <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
119 | 119 | </resheader> |
120 | - <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> | |
121 | - <data name="LogTextBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> | |
122 | - <value>Top, Bottom, Left, Right</value> | |
123 | - </data> | |
124 | - <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> | |
125 | - <data name="LogTextBox.Location" type="System.Drawing.Point, System.Drawing"> | |
126 | - <value>13, 29</value> | |
127 | - </data> | |
128 | - <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> | |
129 | - <data name="LogTextBox.Multiline" type="System.Boolean, mscorlib"> | |
130 | - <value>True</value> | |
131 | - </data> | |
132 | - <data name="LogTextBox.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms"> | |
133 | - <value>Both</value> | |
134 | - </data> | |
135 | - <data name="LogTextBox.Size" type="System.Drawing.Size, System.Drawing"> | |
136 | - <value>473, 335</value> | |
137 | - </data> | |
138 | - <data name="LogTextBox.TabIndex" type="System.Int32, mscorlib"> | |
139 | - <value>0</value> | |
140 | - </data> | |
141 | - <data name=">>LogTextBox.Name" xml:space="preserve"> | |
142 | - <value>LogTextBox</value> | |
143 | - </data> | |
144 | - <data name=">>LogTextBox.Type" xml:space="preserve"> | |
145 | - <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |
146 | - </data> | |
147 | - <data name=">>LogTextBox.Parent" xml:space="preserve"> | |
148 | - <value>$this</value> | |
149 | - </data> | |
150 | - <data name=">>LogTextBox.ZOrder" xml:space="preserve"> | |
151 | - <value>2</value> | |
152 | - </data> | |
153 | 120 | <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> |
154 | 121 | <value>0, 0</value> |
155 | 122 | </metadata> |
156 | - <data name="exitToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing"> | |
157 | - <value>93, 22</value> | |
158 | - </data> | |
159 | - <data name="exitToolStripMenuItem1.Text" xml:space="preserve"> | |
160 | - <value>E&xit</value> | |
161 | - </data> | |
123 | + <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> | |
162 | 124 | <data name="exitToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> |
163 | 125 | <value>37, 20</value> |
164 | 126 | </data> |
@@ -169,8 +131,9 @@ | ||
169 | 131 | <value>0, 0</value> |
170 | 132 | </data> |
171 | 133 | <data name="menuStrip1.Size" type="System.Drawing.Size, System.Drawing"> |
172 | - <value>486, 24</value> | |
134 | + <value>596, 24</value> | |
173 | 135 | </data> |
136 | + <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> | |
174 | 137 | <data name="menuStrip1.TabIndex" type="System.Int32, mscorlib"> |
175 | 138 | <value>2</value> |
176 | 139 | </data> |
@@ -187,13 +150,20 @@ | ||
187 | 150 | <value>$this</value> |
188 | 151 | </data> |
189 | 152 | <data name=">>menuStrip1.ZOrder" xml:space="preserve"> |
190 | - <value>1</value> | |
153 | + <value>2</value> | |
154 | + </data> | |
155 | + <data name="exitToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing"> | |
156 | + <value>152, 22</value> | |
191 | 157 | </data> |
158 | + <data name="exitToolStripMenuItem1.Text" xml:space="preserve"> | |
159 | + <value>E&xit</value> | |
160 | + </data> | |
161 | + <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> | |
192 | 162 | <data name="buttonOK.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> |
193 | 163 | <value>Bottom, Right</value> |
194 | 164 | </data> |
195 | 165 | <data name="buttonOK.Location" type="System.Drawing.Point, System.Drawing"> |
196 | - <value>399, 370</value> | |
166 | + <value>509, 500</value> | |
197 | 167 | </data> |
198 | 168 | <data name="buttonOK.Size" type="System.Drawing.Size, System.Drawing"> |
199 | 169 | <value>75, 23</value> |
@@ -214,6 +184,36 @@ | ||
214 | 184 | <value>$this</value> |
215 | 185 | </data> |
216 | 186 | <data name=">>buttonOK.ZOrder" xml:space="preserve"> |
187 | + <value>1</value> | |
188 | + </data> | |
189 | + <data name="RichLogTextBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> | |
190 | + <value>Top, Bottom, Left, Right</value> | |
191 | + </data> | |
192 | + <data name="RichLogTextBox.Location" type="System.Drawing.Point, System.Drawing"> | |
193 | + <value>0, 27</value> | |
194 | + </data> | |
195 | + <data name="RichLogTextBox.ScrollBars" type="System.Windows.Forms.RichTextBoxScrollBars, System.Windows.Forms"> | |
196 | + <value>ForcedBoth</value> | |
197 | + </data> | |
198 | + <data name="RichLogTextBox.Size" type="System.Drawing.Size, System.Drawing"> | |
199 | + <value>596, 467</value> | |
200 | + </data> | |
201 | + <data name="RichLogTextBox.TabIndex" type="System.Int32, mscorlib"> | |
202 | + <value>4</value> | |
203 | + </data> | |
204 | + <data name="RichLogTextBox.Text" xml:space="preserve"> | |
205 | + <value /> | |
206 | + </data> | |
207 | + <data name=">>RichLogTextBox.Name" xml:space="preserve"> | |
208 | + <value>RichLogTextBox</value> | |
209 | + </data> | |
210 | + <data name=">>RichLogTextBox.Type" xml:space="preserve"> | |
211 | + <value>System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |
212 | + </data> | |
213 | + <data name=">>RichLogTextBox.Parent" xml:space="preserve"> | |
214 | + <value>$this</value> | |
215 | + </data> | |
216 | + <data name=">>RichLogTextBox.ZOrder" xml:space="preserve"> | |
217 | 217 | <value>0</value> |
218 | 218 | </data> |
219 | 219 | <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> |
@@ -223,7 +223,7 @@ | ||
223 | 223 | <value>6, 12</value> |
224 | 224 | </data> |
225 | 225 | <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> |
226 | - <value>486, 405</value> | |
226 | + <value>596, 535</value> | |
227 | 227 | </data> |
228 | 228 | <data name="$this.Text" xml:space="preserve"> |
229 | 229 | <value>MidiInChecker2</value> |
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices; | ||
32 | 32 | // すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を |
33 | 33 | // 既定値にすることができます: |
34 | 34 | // [assembly: AssemblyVersion("1.0.*")] |
35 | -[assembly: AssemblyVersion( "1.0.0.0" )] | |
36 | -[assembly: AssemblyFileVersion( "1.0.0.0" )] | |
35 | +[assembly: AssemblyVersion("2.0.0.0")] | |
36 | +[assembly: AssemblyFileVersion("2.0.0.0")] |