mirror of
https://github.com/quantum5/MusicKeyboard.git
synced 2025-04-24 13:11:58 -04:00
Added ESC to move focused control.
Fixed minor uninitialized variable.
This commit is contained in:
parent
d6274e4d64
commit
7af966e0f3
|
@ -25,6 +25,16 @@
|
|||
#define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam))
|
||||
#endif
|
||||
|
||||
#define KEYBOARD_IMAGE 0xAA00
|
||||
#define KEYBOARD_VOLUME 0xAA01
|
||||
#define KEYBOARD_FORCE 0xAA02
|
||||
#define KEYBOARD_INSTRUMENT 0xAA03
|
||||
#define KEYBOARD_USE_BEEP 0xAAFF
|
||||
#define KEYBOARD_SAVE 0xAB00
|
||||
#define KEYBOARD_SAVE_FILE 0xAB01
|
||||
#define KEYBOARD_BROWSE 0xAB02
|
||||
#define KEYBOARD_REOPEN 0xAB03
|
||||
|
||||
class MainWindow : public Window {
|
||||
public:
|
||||
virtual LPCTSTR ClassName() { return TEXT("MusicKeyboardMain"); }
|
||||
|
@ -67,7 +77,6 @@ protected:
|
|||
bool saving;
|
||||
private:
|
||||
HFONT hFont;
|
||||
HBRUSH hBrush;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
class PianoControl : public Window {
|
||||
public:
|
||||
virtual LPCTSTR ClassName() { return TEXT("KeyboardControl"); }
|
||||
static PianoControl *Create(LPCTSTR szTitle, HWND hwParent,
|
||||
static PianoControl *Create(LPCTSTR szTitle, HWND hwParent, DWORD dwDlgID,
|
||||
DWORD dwStyle = 0,
|
||||
int x = CW_USEDEFAULT, int y = CW_USEDEFAULT,
|
||||
int cx = CW_USEDEFAULT, int cy = CW_USEDEFAULT);
|
||||
|
|
|
@ -14,6 +14,10 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
ShowWindow(win->GetHWND(), nCmdShow);
|
||||
MSG msg;
|
||||
while (GetMessage(&msg, NULL, 0, 0) > 0) {
|
||||
if (msg.message == WM_KEYUP && msg.wParam == VK_ESCAPE) {
|
||||
SendMessage(win->GetHWND(), WM_KEYUP, VK_ESCAPE, msg.lParam);
|
||||
continue;
|
||||
}
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
|
|
|
@ -9,15 +9,6 @@
|
|||
#define RIGHT(x, y, cx, cy) (x - cx), y, cx, cy
|
||||
#define BOTTOM(x, y, cx, cy) x, (y - cy), cx, cy
|
||||
#define BOTTOMRIGHT(x, y, cx, cy) (x - cx), (y - cy), cx, cy
|
||||
#define KEYBOARD_IMAGE 0xAA00
|
||||
#define KEYBOARD_VOLUME 0xAA01
|
||||
#define KEYBOARD_FORCE 0xAA02
|
||||
#define KEYBOARD_INSTRUMENT 0xAA03
|
||||
#define KEYBOARD_USE_BEEP 0xAAFF
|
||||
#define KEYBOARD_SAVE 0xAB00
|
||||
#define KEYBOARD_SAVE_FILE 0xAB01
|
||||
#define KEYBOARD_BROWSE 0xAB02
|
||||
#define KEYBOARD_REOPEN 0xAB03
|
||||
#define MIDI_MESSAGE(handle, code, arg1, arg2) \
|
||||
midiOutShortMsg(handle, ((arg2 & 0x7F) << 16) |\
|
||||
((arg1 & 0x7F) << 8) | (code & 0xFF))
|
||||
|
@ -33,9 +24,6 @@
|
|||
MessageBoxA(hwnd, buf, title, opt); \
|
||||
} while (0)
|
||||
|
||||
|
||||
DWORD rgbWindowBackground;
|
||||
|
||||
static char keymap[256];
|
||||
static LPWSTR keychars =
|
||||
L"~`\0" // F#3
|
||||
|
@ -99,8 +87,6 @@ LRESULT MainWindow::OnCreate()
|
|||
GetClientRect(m_hwnd, &client);
|
||||
|
||||
hFont = CreateFontIndirect(&ncmMetrics.lfMessageFont);
|
||||
rgbWindowBackground = GetSysColor(COLOR_WINDOW);
|
||||
hBrush = GetSysColorBrush(COLOR_WINDOW);
|
||||
|
||||
// Children
|
||||
m_volumeLabel = CreateWindow(WC_STATIC, L"Volume:",
|
||||
|
@ -113,34 +99,35 @@ LRESULT MainWindow::OnCreate()
|
|||
WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE, 0, 0, 0, 0,
|
||||
m_hwnd, NULL, GetInstance(), NULL);
|
||||
|
||||
m_volumeBar = CreateWindow(TRACKBAR_CLASS, NULL,
|
||||
WS_CHILD | WS_VISIBLE | TBS_NOTICKS, 0, 0, 0, 0,
|
||||
m_hwnd, (HMENU) KEYBOARD_VOLUME, GetInstance(), NULL);
|
||||
m_forceBar = CreateWindow(TRACKBAR_CLASS, NULL,
|
||||
WS_CHILD | WS_VISIBLE | TBS_NOTICKS, 0, 0, 0, 0,
|
||||
m_hwnd, (HMENU) KEYBOARD_FORCE, GetInstance(), NULL);
|
||||
m_instruSelect = CreateWindow(WC_COMBOBOX, NULL, WS_CHILD | WS_VISIBLE |
|
||||
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL, 0, 0, 0, 0,
|
||||
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP,
|
||||
0, 0, 0, 0,
|
||||
m_hwnd, (HMENU) KEYBOARD_INSTRUMENT, GetInstance(), NULL);
|
||||
m_forceBar = CreateWindow(TRACKBAR_CLASS, NULL,
|
||||
WS_CHILD | WS_VISIBLE | TBS_NOTICKS | WS_TABSTOP, 0, 0, 0, 0,
|
||||
m_hwnd, (HMENU) KEYBOARD_FORCE, GetInstance(), NULL);
|
||||
m_volumeBar = CreateWindow(TRACKBAR_CLASS, NULL,
|
||||
WS_CHILD | WS_VISIBLE | TBS_NOTICKS | WS_TABSTOP, 0, 0, 0, 0,
|
||||
m_hwnd, (HMENU) KEYBOARD_VOLUME, GetInstance(), NULL);
|
||||
|
||||
m_beepCheck = CreateWindow(WC_BUTTON, L"&Beep?", WS_CHILD | WS_VISIBLE | BS_CHECKBOX,
|
||||
0, 0, 0, 0, m_hwnd, (HMENU) KEYBOARD_USE_BEEP, GetInstance(), NULL);
|
||||
|
||||
m_saveCheck = CreateWindow(WC_BUTTON, L"&Save?", WS_CHILD | WS_VISIBLE | BS_CHECKBOX,
|
||||
m_saveCheck = CreateWindow(WC_BUTTON, L"&Save?", WS_CHILD | WS_VISIBLE | BS_CHECKBOX | WS_TABSTOP,
|
||||
0, 0, 0, 0, m_hwnd, (HMENU) KEYBOARD_SAVE, GetInstance(), NULL);
|
||||
m_saveLabel = CreateWindow(WC_STATIC, L"File:",
|
||||
WS_CHILD | WS_VISIBLE | WS_DISABLED | SS_CENTERIMAGE, 0, 0, 0, 0,
|
||||
m_hwnd, NULL, GetInstance(), NULL);
|
||||
m_saveFile = CreateWindowEx(WS_EX_CLIENTEDGE, WC_EDIT, NULL,
|
||||
WS_CHILD | WS_VISIBLE | WS_DISABLED, 0, 0, 0, 0,
|
||||
WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_TABSTOP, 0, 0, 0, 0,
|
||||
m_hwnd, (HMENU) KEYBOARD_SAVE_FILE, GetInstance(), NULL);
|
||||
m_saveBrowse = CreateWindow(WC_BUTTON, L"B&rowse...",
|
||||
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_DISABLED,
|
||||
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_DISABLED | WS_TABSTOP,
|
||||
0, 0, 0, 0, m_hwnd, (HMENU) KEYBOARD_BROWSE, GetInstance(), NULL);
|
||||
m_reopen = CreateWindow(WC_BUTTON, L"R&eopen",
|
||||
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_DISABLED,
|
||||
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_DISABLED | WS_TABSTOP,
|
||||
0, 0, 0, 0, m_hwnd, (HMENU) KEYBOARD_REOPEN, GetInstance(), NULL);
|
||||
|
||||
m_beepCheck = CreateWindow(WC_BUTTON, L"&Beep?", WS_CHILD | WS_VISIBLE | BS_CHECKBOX | WS_TABSTOP,
|
||||
0, 0, 0, 0, m_hwnd, (HMENU) KEYBOARD_USE_BEEP, GetInstance(), NULL);
|
||||
|
||||
SendMessage(m_volumeBar, TBM_SETRANGEMIN, FALSE, 0x0000);
|
||||
SendMessage(m_volumeBar, TBM_SETRANGEMAX, FALSE, 0xFFFF);
|
||||
SendMessage(m_forceBar, TBM_SETRANGE, FALSE, 127 << 16);
|
||||
|
@ -184,7 +171,9 @@ LRESULT MainWindow::OnCreate()
|
|||
MessageBox(m_hwnd, L"Failed to open MIDI device!", L"Fatal Error", MB_ICONERROR);
|
||||
|
||||
memset(state, 0, 128 * sizeof(bool));
|
||||
this->piano = PianoControl::Create(NULL, m_hwnd, WS_VISIBLE | WS_CHILD, 0, 0, 0, 0);
|
||||
this->piano = PianoControl::Create(NULL, m_hwnd, KEYBOARD_IMAGE,
|
||||
WS_VISIBLE | WS_CHILD | WS_TABSTOP,
|
||||
0, 0, 0, 0);
|
||||
this->piano->SetBackground(GetSysColorBrush(COLOR_3DFACE));
|
||||
|
||||
// Beep Initialization
|
||||
|
@ -196,9 +185,8 @@ LRESULT MainWindow::OnCreate()
|
|||
} else {
|
||||
F_RtlInitUnicodeString(&usBeepDevice, L"\\Device\\Beep");
|
||||
hBeep = NULL;
|
||||
useBeep = false;
|
||||
}
|
||||
|
||||
useBeep = false;
|
||||
{
|
||||
keymap[VK_OEM_3] = 54; // `~ key
|
||||
keymap['Q'] = 55;
|
||||
|
@ -581,6 +569,11 @@ LRESULT MainWindow::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
break;
|
||||
case WM_KEYUP:
|
||||
case WM_SYSKEYUP:
|
||||
if (wParam == VK_ESCAPE) {
|
||||
HWND hwnd = GetNextDlgTabItem(m_hwnd, GetFocus(), GetKeyState(VK_SHIFT) < 0);
|
||||
SetFocus(hwnd);
|
||||
return 0;
|
||||
}
|
||||
if (Play(wParam, lParam, false))
|
||||
return 0;
|
||||
break;
|
||||
|
|
|
@ -584,13 +584,13 @@ LRESULT PianoControl::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return Window::HandleMessage(uMsg, wParam, lParam);
|
||||
}
|
||||
|
||||
PianoControl *PianoControl::Create(LPCTSTR szTitle, HWND hwParent,
|
||||
PianoControl *PianoControl::Create(LPCTSTR szTitle, HWND hwParent, DWORD dwDlgID,
|
||||
DWORD dwStyle, int x, int y, int cx, int cy)
|
||||
{
|
||||
PianoControl *self = new PianoControl();
|
||||
if (self &&
|
||||
self->WinCreateWindow(0, szTitle, dwStyle, x, y, cx, cy,
|
||||
hwParent, NULL)) {
|
||||
hwParent, (HMENU) dwDlgID)) {
|
||||
return self;
|
||||
}
|
||||
delete self;
|
||||
|
|
Loading…
Reference in a new issue