Windows project c ++ имитирует клавиатуру пианино с клавиатуры

Мне нужно имитировать нажатие клавиш пианино с помощью клавиатуры, но я не могу заставить ее работать.
Я могу воспроизводить звуки, когда создаю окно (выполняю код), но не когда нажимаю какие-либо клавиши. Эти звуки воспроизводятся автоматически, если я поставлю их перед переключателем (сообщением). Я сделал что-то явно неправильно?

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HMIDIOUT hMidiOut;
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;

// Open MIDI for output
midiOutOpen(&hMidiOut, -1, 0, 0, 0);
// Set instrument to 0 = Acoustic Grand Piano
midiOutShortMsg(hMidiOut, DWORD(0x0C0 | 0 | (0 << 8) | (0 << 16)));switch (message)
{
case WM_KEYDOWN:
{
switch (wParam) {

case VK_LEFT:

// Set instrument to 0 = Acoustic Grand Piano

midiOutShortMsg (hMidiOut, DWORD(0x090 | 0 | (65<<8 ) | (64 << 16)));
break;

case 'S':
midiOutShortMsg (hMidiOut, DWORD(0x090 | 0 | (62<<8 ) | (64 << 16)));
break;

case 'D':
midiOutShortMsg (hMidiOut, DWORD(0x090 | 0 | (64<<8 ) | (64 << 16)));
break;

case 'F':
midiOutShortMsg (hMidiOut, DWORD(0x090 | 0 | (65<<8 ) | (64 << 16)));
break;

case 'G':
midiOutShortMsg (hMidiOut, DWORD(0x090 | 0 | (67<<8 ) | (64 << 16)));
break;

case 'H':
midiOutShortMsg (hMidiOut, DWORD(0x090 | 0 | (69<<8 ) | (64 << 16)));
break;

case 'J':
midiOutShortMsg (hMidiOut, DWORD(0x090 | 0 | (71<<8 ) | (64 << 16)));
break;

case 'K':
midiOutShortMsg (hMidiOut, DWORD(0x090 | 0 | (72<<8 ) | (64 << 16)));
break;
}}

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]