Fixed up the corner cases.

This commit is contained in:
Quantum 2015-01-25 21:17:58 -05:00
parent 936219a3e9
commit 0f297cfae3

View file

@ -233,7 +233,7 @@ LRESULT MainWindow::OnCreate()
SendMessage(m_volumeBar, TBM_SETPOS, FALSE, 0xFFFF);
SendMessage(m_forceBar, TBM_SETPOS, FALSE, 64);
SendMessage(m_semitoneUpDown, UDM_SETRANGE32, (WPARAM) -36, 48);
SendMessage(m_semitoneUpDown, UDM_SETRANGE32, (WPARAM) -36, 47);
SendMessage(m_semitoneUpDown, UDM_SETPOS32, 0, 0);
SendMessage(m_octaveUpDown, UDM_SETRANGE32, (WPARAM) -3, 3);
SendMessage(m_octaveUpDown, UDM_SETPOS32, 0, 0);
@ -729,9 +729,11 @@ LRESULT MainWindow::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
switch (LOWORD(wParam))
case KEYBOARD_OCTAVE: {
if (!adjusting) {
int octave = clamp((int) GetDlgItemInt(m_hwnd, KEYBOARD_OCTAVE, NULL, TRUE), -3, 3);
int o = GetDlgItemInt(m_hwnd, KEYBOARD_OCTAVE, NULL, TRUE);
int octave = clamp(o, -3, 3);
int semitones = octave * 12 + SendMessage(m_keySelect, CB_GETCURSEL, 0, 0);
adjusting = true;
if (o != octave)
SetDlgItemInt(m_hwnd, KEYBOARD_OCTAVE, octave, TRUE);
SetDlgItemInt(m_hwnd, KEYBOARD_SEMITONE, semitones, TRUE);
OnAdjust();
@ -740,8 +742,10 @@ LRESULT MainWindow::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
break;
case KEYBOARD_SEMITONE:
if (!adjusting) {
int semitones = clamp((int) GetDlgItemInt(m_hwnd, KEYBOARD_SEMITONE, NULL, TRUE), -36, 48);
int s = GetDlgItemInt(m_hwnd, KEYBOARD_SEMITONE, NULL, TRUE);
int semitones = clamp(s, -36, 47);
adjusting = true;
if (s != semitones)
SetDlgItemInt(m_hwnd, KEYBOARD_SEMITONE, semitones, TRUE);
SetDlgItemInt(m_hwnd, KEYBOARD_OCTAVE, (WPARAM) floor(semitones / 12.0), TRUE);
SendMessage(m_keySelect, CB_SETCURSEL, (semitones % 12 + 12) % 12, 0);