• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#objective-cqtwindows誰得cocoapythonphprubygameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwittertestdomvb.netdirectxbtronarduinopreviewerゲームエンジン

Windows Apps


コミットメタ情報

リビジョンceadd361cbef0aa5feaef36514c0ac81af7863dd (tree)
日時2014-06-15 14:18:38
作者oga <hyperoga@gmai...>
コミッターoga

ログメッセージ

2014/06/16 add Select Instruments

変更サマリ

差分

Binary files a/wkeyboard/Release/wkeyboard.exe and b/wkeyboard/Release/wkeyboard.exe differ
--- a/wkeyboard/Resource.h
+++ b/wkeyboard/Resource.h
@@ -7,6 +7,7 @@
77 #define IDS_ABOUTBOX 101
88 #define IDD_WKEYBOARD_DIALOG 102
99 #define IDR_MAINFRAME 128
10+#define IDD_SELINST_DLG 129
1011 #define IDC_COMBO1 1000
1112 #define IDC_BTN_NOTEDOWN1 1004
1213 #define IDC_BTN_NOTEDOWN10 1005
@@ -20,17 +21,51 @@
2021 #define IDC_BTN_KSDOWN 1013
2122 #define IDC_EDIT_KS 1014
2223 #define IDC_BTN_DR 1015
24+#define IDC_CHECK_ALL 1015
2325 #define IDC_BTN_PLAY 1016
26+#define IDC_CHECK2 1016
2427 #define IDC_BTN_REV_ONESTEP 1017
28+#define IDC_CHECK3 1017
2529 #define IDC_BTN_FW_ONESTEP 1018
30+#define IDC_CHECK4 1018
31+#define IDC_CHECK5 1019
32+#define IDC_BTN_SELINST 1019
33+#define IDC_CHECK6 1020
34+#define IDC_CHECK7 1021
35+#define IDC_CHECK8 1022
36+#define IDC_CHECK9 1023
37+#define IDC_CHECK10 1024
38+#define IDC_CHECK11 1025
39+#define IDC_CHECK12 1026
40+#define IDC_CHECK13 1027
41+#define IDC_CHECK14 1028
42+#define IDC_STATIC_1 1029
43+#define IDC_CHECK15 1030
44+#define IDC_CHECK16 1031
45+#define IDC_CHECK1 1032
46+#define IDC_STATIC_2 1033
47+#define IDC_STATIC_3 1034
48+#define IDC_STATIC_4 1035
49+#define IDC_STATIC_5 1036
50+#define IDC_STATIC_6 1037
51+#define IDC_STATIC_7 1038
52+#define IDC_STATIC_8 1039
53+#define IDC_STATIC_9 1040
54+#define IDC_STATIC_10 1041
55+#define IDC_STATIC_11 1042
56+#define IDC_STATIC_12 1043
57+#define IDC_STATIC_13 1044
58+#define IDC_STATIC_14 1045
59+#define IDC_STATIC_15 1046
60+#define IDC_STATIC_16 1047
2661
2762 // Next default values for new objects
2863 //
2964 #ifdef APSTUDIO_INVOKED
3065 #ifndef APSTUDIO_READONLY_SYMBOLS
31-#define _APS_NEXT_RESOURCE_VALUE 129
66+#define _APS_NEXT_RESOURCE_VALUE 130
3267 #define _APS_NEXT_COMMAND_VALUE 32771
33-#define _APS_NEXT_CONTROL_VALUE 1015
68+#define _APS_NEXT_CONTROL_VALUE 1030
3469 #define _APS_NEXT_SYMED_VALUE 101
3570 #endif
3671 #endif
--- a/wkeyboard/ToDo.txt
+++ b/wkeyboard/ToDo.txt
@@ -22,5 +22,6 @@ ToDo
2222 ステップ実行(Fwd)時の8x,9x,Cx,ff5103tttttt(Tempo)以外無視
2323 チャンネル単位の音有無/鍵盤表示設定機能
2424 Deltaが長いMIDIファイルがある件、原因調査(解析不足?)
25+ テンポが適用されないことがある
2526 (8)キーボード和音押し表示対応
2627
--- a/wkeyboard/midilib.c
+++ b/wkeyboard/midilib.c
@@ -305,7 +305,7 @@ typedef struct _midiinst {
305305 } MidiInst;
306306
307307 MidiInst minst;
308-
308+insttbl_t inst_tbl[16]; /* Instrumetn Table V0.50-A */
309309
310310 void dlog(char *str)
311311 {
@@ -426,7 +426,6 @@ void WinMidiClose(MidiInst *pminst)
426426 /*
427427 * WinMidiShortMsg()
428428 * MIDI Short Message を発行する
429- * (コールバック関数が設定されていれば、コールバック関数も呼び出す)
430429 *
431430 * IN pminst : MidiInstへのポインタ
432431 * IN dwMsg : MIDIメッセージ
@@ -443,17 +442,19 @@ void WinMidiShortMsg(MidiInst *pminst, DWORD dwMsg)
443442 }
444443 /* V0.50-A end */
445444
446- /* notis midi msg to callback func */
447- if (cb_func) {
448- (*cb_func)(dwMsg);
449- }
450-
451445 st = midiOutShortMsg(pminst->hmo, dwMsg);
452446 if (st == MMSYSERR_NOERROR) {
453447 pminst->playing = 1;
454448 } else {
455449 dlog1("WinMidiShortMsg: Error: midiOutShortMsg() return=%d\n", st);
456450 }
451+
452+#if 0
453+ /* notis midi msg to callback func */
454+ if (cb_func) {
455+ (*cb_func)(dwMsg);
456+ }
457+#endif
457458 }
458459
459460
@@ -1253,6 +1254,9 @@ int trknm;
12531254 playdat[trknm][idx*2] = delta_sum; /* Delta Time 累計で格納 */
12541255 playdat[trknm][idx*2+1] = MIDIMSG(cmd1, cmd2, cmd3);
12551256 ++idx;
1257+ if (stat == 12) { /* program chane */
1258+ inst_tbl[trkno].instno = cmd2;
1259+ }
12561260 }
12571261 #endif
12581262 }
@@ -1418,6 +1422,7 @@ void StopAllNotes()
14181422 for (i = 0; i < 16; i++) { /* ch */
14191423 // All Notes Off (Bx 7B 00)
14201424 WinMidiShortMsg(&minst, MIDIMSG(0xB0+i, 0x7B, 0));
1425+ if (cb_func) (*cb_func)(MIDIMSG(0xB0+i, 0x7B, 0)); /* for update screen */
14211426 }
14221427 }
14231428
@@ -1431,7 +1436,8 @@ void InitInstruments()
14311436
14321437 dlog("InitInstruments()\n");
14331438 for (i = 0; i < 16; i++) { /* ch */
1434- WinMidiShortMsg(&minst, MIDIMSG(0xC0+i, 0x00, 0)); // Set to Piano 1
1439+ WinMidiShortMsg(&minst, MIDIMSG(0xC0+i, 0x00, 0)); /* Set to Piano1 */
1440+ inst_tbl[i].instno = 0; /* Set to Piano1 */
14351441 }
14361442 }
14371443 /* V0.50-A end */
@@ -1586,8 +1592,24 @@ rewind:
15861592 /* -cの場合指定chのみ発音 */
15871593 if (!skipping || ((wk & 0xf0) == 0xc0)) {
15881594 /* skip中以外 または、Prog Changeは再生 */
1589- WinMidiShortMsg(&minst, wk);
1590- last_cb_tick = tick; /* 最後にcallbackしたtick値更新 V0.50-A */
1595+ /* V0.50-C start */
1596+ if (((wk & 0xf0) == 0x90) || ((wk & 0xf0) == 0x80)) {
1597+ /* note on/off */
1598+ if (inst_tbl[wk & 0x0f].play) {
1599+ WinMidiShortMsg(&minst, wk); /* play & disp */
1600+ if (cb_func) (*cb_func)(wk); /* for update screen */
1601+ last_cb_tick = tick; /* 最後にcallbackしたtick値更新 V0.50-A */
1602+ } else if (inst_tbl[wk & 0x0f].disp) {
1603+ /* disp only */
1604+ if (cb_func) (*cb_func)(wk); /* for update screen */
1605+ last_cb_tick = tick;
1606+ }
1607+ } else {
1608+ /* prog change */
1609+ WinMidiShortMsg(&minst, wk);
1610+ last_cb_tick = tick; /* 最後にcallbackしたtick値更新 V0.50-A */
1611+ }
1612+ /* V0.50-C end */
15911613 }
15921614 }
15931615 }
@@ -1778,6 +1800,8 @@ void FreePlaydat()
17781800 */
17791801 void MidiLibStart()
17801802 {
1803+ int i;
1804+
17811805 dlog("MidiLibStart()\n");
17821806 memset(playdat, 0, sizeof(playdat));
17831807 memset(&minst, 0, sizeof(minst));
@@ -1787,6 +1811,12 @@ void MidiLibStart()
17871811 total_delta = 0;
17881812 cur_delta = 0;
17891813 cb_func = NULL;
1814+
1815+ memset(&inst_tbl, 0, sizeof(inst_tbl));
1816+ for (i = 0; i < 16; i++) {
1817+ inst_tbl[i].disp = 1;
1818+ inst_tbl[i].play = 1;
1819+ }
17901820 }
17911821
17921822 /*
--- a/wkeyboard/midilib.h
+++ b/wkeyboard/midilib.h
@@ -13,6 +13,12 @@ typedef struct _playstat {
1313 u_int measure; /* current play measure */
1414 } playstat_t;
1515
16+typedef struct _insttbl {
17+ int instno; /* instrument number */
18+ int disp; /* display switch */
19+ int play; /* play switch */
20+} insttbl_t;
21+
1622 /* callback func type */
1723 typedef void (*MIDICB)(unsigned int midicmd);
1824
@@ -44,6 +50,9 @@ typedef void (*MIDICB)(unsigned int midicmd);
4450 extern "C" {
4551 #endif /* __cplusplus */
4652
53+extern insttbl_t inst_tbl[];
54+extern char *prog_name[];
55+
4756 extern void MidiLibStart();
4857 extern void MidiLibEnd();
4958
--- /dev/null
+++ b/wkeyboard/wkeyboard.clw
@@ -0,0 +1,122 @@
1+; CLW ファイルは MFC ClassWizard の情報を含んでいます。
2+
3+[General Info]
4+Version=1
5+LastClass=CSelectInst
6+LastTemplate=CDialog
7+NewFileInclude1=#include "stdafx.h"
8+NewFileInclude2=#include "wkeyboard.h"
9+
10+ClassCount=4
11+Class1=CWkeyboardApp
12+Class2=CWkeyboardDlg
13+Class3=CAboutDlg
14+
15+ResourceCount=4
16+Resource1=IDD_WKEYBOARD_DIALOG
17+Resource2=IDR_MAINFRAME
18+Resource3=IDD_ABOUTBOX
19+Class4=CSelectInst
20+Resource4=IDD_SELINST_DLG
21+
22+[CLS:CWkeyboardApp]
23+Type=0
24+HeaderFile=wkeyboard.h
25+ImplementationFile=wkeyboard.cpp
26+Filter=N
27+
28+[CLS:CWkeyboardDlg]
29+Type=0
30+HeaderFile=wkeyboardDlg.h
31+ImplementationFile=wkeyboardDlg.cpp
32+Filter=D
33+BaseClass=CDialog
34+VirtualFilter=dWC
35+LastObject=CWkeyboardDlg
36+
37+[CLS:CAboutDlg]
38+Type=0
39+HeaderFile=wkeyboardDlg.h
40+ImplementationFile=wkeyboardDlg.cpp
41+Filter=D
42+
43+[DLG:IDD_ABOUTBOX]
44+Type=1
45+Class=CAboutDlg
46+ControlCount=4
47+Control1=IDC_STATIC,static,1342177283
48+Control2=IDC_STATIC,static,1342308480
49+Control3=IDC_STATIC,static,1342308352
50+Control4=IDOK,button,1342373889
51+
52+[DLG:IDD_WKEYBOARD_DIALOG]
53+Type=1
54+Class=CWkeyboardDlg
55+ControlCount=17
56+Control1=IDC_COMBO1,combobox,1344340227
57+Control2=IDC_BTN_NOTEDOWN10,button,1342242816
58+Control3=IDC_BTN_NOTEDOWN1,button,1342242816
59+Control4=IDC_BTN_NOTEUP1,button,1342242816
60+Control5=IDC_BTN_NOTEUP10,button,1342242816
61+Control6=IDC_STATIC_DUMMY,static,1073872896
62+Control7=IDC_BTN_KSDOWN,button,1342242816
63+Control8=IDC_BTN_KSUP,button,1342242816
64+Control9=IDC_EDIT_KS,edit,1350567937
65+Control10=IDC_BTN_GT,button,1342242816
66+Control11=IDC_BTN_DR,button,1342242816
67+Control12=IDC_BTN_STOP,button,1342242816
68+Control13=IDC_BTN_PAUSE,button,1342242816
69+Control14=IDC_BTN_PLAY,button,1342242816
70+Control15=IDC_BTN_REV_ONESTEP,button,1342242816
71+Control16=IDC_BTN_FW_ONESTEP,button,1342242816
72+Control17=IDC_BTN_SELINST,button,1342242816
73+
74+[DLG:IDD_SELINST_DLG]
75+Type=1
76+Class=CSelectInst
77+ControlCount=35
78+Control1=IDC_CHECK_ALL,button,1342242819
79+Control2=IDC_CHECK1,button,1342242819
80+Control3=IDC_CHECK2,button,1342242819
81+Control4=IDC_CHECK3,button,1342242819
82+Control5=IDC_CHECK4,button,1342242819
83+Control6=IDC_CHECK5,button,1342242819
84+Control7=IDC_CHECK6,button,1342242819
85+Control8=IDC_CHECK7,button,1342242819
86+Control9=IDC_CHECK8,button,1342242819
87+Control10=IDC_CHECK9,button,1342242819
88+Control11=IDC_CHECK10,button,1342242819
89+Control12=IDC_CHECK11,button,1342242819
90+Control13=IDC_CHECK12,button,1342242819
91+Control14=IDC_CHECK13,button,1342242819
92+Control15=IDC_CHECK14,button,1342242819
93+Control16=IDC_CHECK15,button,1342242819
94+Control17=IDC_CHECK16,button,1342242819
95+Control18=IDOK,button,1342242817
96+Control19=IDCANCEL,button,1342242816
97+Control20=IDC_STATIC_1,static,1342308352
98+Control21=IDC_STATIC_2,static,1342308352
99+Control22=IDC_STATIC_3,static,1342308352
100+Control23=IDC_STATIC_4,static,1342308352
101+Control24=IDC_STATIC_5,static,1342308352
102+Control25=IDC_STATIC_6,static,1342308352
103+Control26=IDC_STATIC_7,static,1342308352
104+Control27=IDC_STATIC_8,static,1342308352
105+Control28=IDC_STATIC_9,static,1342308352
106+Control29=IDC_STATIC_10,static,1342308352
107+Control30=IDC_STATIC_11,static,1342308352
108+Control31=IDC_STATIC_12,static,1342308352
109+Control32=IDC_STATIC_13,static,1342308352
110+Control33=IDC_STATIC_14,static,1342308352
111+Control34=IDC_STATIC_15,static,1342308352
112+Control35=IDC_STATIC_16,static,1342308352
113+
114+[CLS:CSelectInst]
115+Type=0
116+HeaderFile=SelectInst.h
117+ImplementationFile=SelectInst.cpp
118+BaseClass=CDialog
119+Filter=D
120+VirtualFilter=dWC
121+LastObject=CSelectInst
122+
--- a/wkeyboard/wkeyboard.dsp
+++ b/wkeyboard/wkeyboard.dsp
@@ -81,7 +81,7 @@ BSC32=bscmake.exe
8181 # ADD BSC32 /nologo
8282 LINK32=link.exe
8383 # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
84-# ADD LINK32 winmm.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
84+# ADD LINK32 winmm.lib wsock32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
8585
8686 !ENDIF
8787
@@ -98,6 +98,10 @@ SOURCE=.\midilib.c
9898 # End Source File
9999 # Begin Source File
100100
101+SOURCE=.\SelectInst.cpp
102+# End Source File
103+# Begin Source File
104+
101105 SOURCE=.\StdAfx.cpp
102106 # ADD CPP /Yc"stdafx.h"
103107 # End Source File
@@ -127,6 +131,10 @@ SOURCE=.\Resource.h
127131 # End Source File
128132 # Begin Source File
129133
134+SOURCE=.\SelectInst.h
135+# End Source File
136+# Begin Source File
137+
130138 SOURCE=.\StdAfx.h
131139 # End Source File
132140 # Begin Source File
--- a/wkeyboard/wkeyboard.rc
+++ b/wkeyboard/wkeyboard.rc
@@ -99,17 +99,77 @@ BEGIN
9999 PUSHBUTTON ">",IDC_BTN_NOTEUP1,29,14,10,12
100100 PUSHBUTTON ">>",IDC_BTN_NOTEUP10,40,14,10,12
101101 LTEXT "Dummy",IDC_STATIC_DUMMY,53,16,23,8,NOT WS_VISIBLE
102- PUSHBUTTON "GT",IDC_BTN_GT,102,13,15,12
103- PUSHBUTTON "KS+",IDC_BTN_KSUP,117,1,15,12
104102 PUSHBUTTON "KS-",IDC_BTN_KSDOWN,102,1,15,12
103+ PUSHBUTTON "KS+",IDC_BTN_KSUP,117,1,15,12
105104 EDITTEXT IDC_EDIT_KS,133,1,12,12,ES_CENTER | ES_READONLY | NOT
106105 WS_TABSTOP
106+ PUSHBUTTON "GT",IDC_BTN_GT,102,13,15,12
107107 PUSHBUTTON "DR",IDC_BTN_DR,117,13,15,12
108108 PUSHBUTTON "■",IDC_BTN_STOP,162,7,10,12
109109 PUSHBUTTON "||",IDC_BTN_PAUSE,173,7,10,12
110110 PUSHBUTTON ">",IDC_BTN_PLAY,184,7,10,12
111111 PUSHBUTTON "<||",IDC_BTN_REV_ONESTEP,195,7,10,12
112112 PUSHBUTTON "||>",IDC_BTN_FW_ONESTEP,206,7,10,12
113+ PUSHBUTTON "Inst",IDC_BTN_SELINST,217,7,16,12
114+END
115+
116+IDD_SELINST_DLG DIALOG DISCARDABLE 0, 0, 131, 192
117+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
118+CAPTION "Select Instruments"
119+FONT 9, "MS Pゴシック"
120+BEGIN
121+ CONTROL "All",IDC_CHECK_ALL,"Button",BS_AUTOCHECKBOX |
122+ WS_TABSTOP,7,7,24,10
123+ CONTROL "1ch",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,
124+ 20,21,10
125+ CONTROL "2ch",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,
126+ 29,26,10
127+ CONTROL "3ch",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,
128+ 38,26,10
129+ CONTROL "4ch",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,
130+ 47,26,10
131+ CONTROL "5ch",IDC_CHECK5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,
132+ 56,26,10
133+ CONTROL "6ch",IDC_CHECK6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,
134+ 65,26,10
135+ CONTROL "7ch",IDC_CHECK7,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,
136+ 74,26,10
137+ CONTROL "8ch",IDC_CHECK8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,
138+ 83,26,10
139+ CONTROL "9ch",IDC_CHECK9,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,
140+ 92,26,10
141+ CONTROL "10ch",IDC_CHECK10,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
142+ 7,101,30,10
143+ CONTROL "11ch",IDC_CHECK11,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
144+ 7,110,30,10
145+ CONTROL "12ch",IDC_CHECK12,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
146+ 7,119,30,10
147+ CONTROL "13ch",IDC_CHECK13,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
148+ 7,128,30,10
149+ CONTROL "14ch",IDC_CHECK14,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
150+ 7,137,38,10
151+ CONTROL "15ch",IDC_CHECK15,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
152+ 7,146,38,10
153+ CONTROL "16ch",IDC_CHECK16,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
154+ 7,155,38,10
155+ DEFPUSHBUTTON "OK",IDOK,7,171,37,14
156+ PUSHBUTTON "Cancel",IDCANCEL,45,171,37,14
157+ LTEXT "Instrument",IDC_STATIC_1,60,20,55,8
158+ LTEXT "Instrument",IDC_STATIC_2,60,29,55,8
159+ LTEXT "Instrument",IDC_STATIC_3,60,38,55,8
160+ LTEXT "Instrument",IDC_STATIC_4,60,47,55,8
161+ LTEXT "Instrument",IDC_STATIC_5,60,56,55,8
162+ LTEXT "Instrument",IDC_STATIC_6,60,65,55,8
163+ LTEXT "Instrument",IDC_STATIC_7,60,74,55,8
164+ LTEXT "Instrument",IDC_STATIC_8,60,83,55,8
165+ LTEXT "Instrument",IDC_STATIC_9,60,92,55,8
166+ LTEXT "Instrument",IDC_STATIC_10,60,101,55,8
167+ LTEXT "Instrument",IDC_STATIC_11,60,110,55,8
168+ LTEXT "Instrument",IDC_STATIC_12,60,119,55,8
169+ LTEXT "Instrument",IDC_STATIC_13,60,128,55,8
170+ LTEXT "Instrument",IDC_STATIC_14,60,137,55,8
171+ LTEXT "Instrument",IDC_STATIC_15,60,146,55,8
172+ LTEXT "Instrument",IDC_STATIC_16,60,155,55,8
113173 END
114174
115175
@@ -181,6 +241,14 @@ BEGIN
181241 RIGHTMARGIN, 444
182242 BOTTOMMARGIN, 122
183243 END
244+
245+ IDD_SELINST_DLG, DIALOG
246+ BEGIN
247+ LEFTMARGIN, 7
248+ RIGHTMARGIN, 124
249+ TOPMARGIN, 7
250+ BOTTOMMARGIN, 185
251+ END
184252 END
185253 #endif // APSTUDIO_INVOKED
186254
--- a/wkeyboard/wkeyboardDlg.cpp
+++ b/wkeyboard/wkeyboardDlg.cpp
@@ -30,6 +30,7 @@
3030 #include "stdafx.h"
3131 #include "wkeyboard.h"
3232 #include "wkeyboardDlg.h"
33+#include "SelectInst.h"
3334 #include "midilib.h"
3435
3536 #ifdef _DEBUG
@@ -107,6 +108,7 @@ char *note[128] = {
107108 "C9 ","C9#","D9 ","D9#","E9 ","F9 ","F9#","G9 ","G9#","A9 ","A9#","B9 ",
108109 "Ca ","Ca#","Da ","Da#","Ea ","Fa ","Fa#","Ga " };
109110
111+#if 0
110112 /* Program Name (SC-55) */
111113 char *prog_name[MAX_PROG] = {
112114 /* 1*/ "Piano1",
@@ -238,6 +240,7 @@ char *prog_name[MAX_PROG] = {
238240 "Applause",
239241 /*128*/ "GunShot",
240242 };
243+#endif
241244
242245
243246 /////////////////////////////////////////////////////////////////////////////
@@ -334,9 +337,10 @@ ON_WM_TIMER()
334337 ON_BN_CLICKED(IDC_BTN_PAUSE, OnBtnPause)
335338 ON_BN_CLICKED(IDC_BTN_STOP, OnBtnStop)
336339 ON_BN_CLICKED(IDC_BTN_FW_ONESTEP, OnBtnFwOnestep)
340+ ON_BN_CLICKED(IDC_BTN_REV_ONESTEP, OnBtnRevOnestep)
337341 ON_WM_KEYUP()
338342 ON_WM_KEYDOWN()
339- ON_BN_CLICKED(IDC_BTN_REV_ONESTEP, OnBtnRevOnestep)
343+ ON_BN_CLICKED(IDC_BTN_SELINST, OnBtnSelinst)
340344 //}}AFX_MSG_MAP
341345 ON_WM_DROPFILES()
342346 END_MESSAGE_MAP()
@@ -1872,5 +1876,12 @@ void CWkeyboardDlg::MidiCallback(unsigned int cmd)
18721876 gDlg->Invalidate(FALSE); // 再描画
18731877 }
18741878
1875-// V1.04-A end
1879+void CWkeyboardDlg::OnBtnSelinst()
1880+{
1881+ // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
1882+ CSelectInst dlg;
18761883
1884+ dlg.DoModal();
1885+}
1886+
1887+// V1.04-A end
--- a/wkeyboard/wkeyboardDlg.h
+++ b/wkeyboard/wkeyboardDlg.h
@@ -146,6 +146,7 @@ protected:
146146 afx_msg void OnBtnStop();
147147 afx_msg void OnBtnFwOnestep();
148148 afx_msg void OnBtnRevOnestep();
149+ afx_msg void OnBtnSelinst();
149150 //}}AFX_MSG
150151 afx_msg void OnDropFiles( HDROP hDropInfo ); // V1.04-A
151152 DECLARE_MESSAGE_MAP()