钢琴键盘演奏说明书

发布时间 : 星期五 文章钢琴键盘演奏说明书更新完毕开始阅读

CmdShow:DWORD

LOCAL wc:WNDCLASSEX LOCAL msg:MSG LOCAL hwnd:HWND

mov wc.cbSize, SIZEOF WNDCLASSEX

mov wc.style, CS_HREDRAW or CS_VREDRAW mov wc.lpfnWndProc, OFFSET WndProc mov wc.cbClsExtra, NULL mov wc.cbWndExtra, NULL push hInst

pop wc.hInstance

mov wc.hbrBackground, COLOR_WINDOW+1 mov wc.lpszMenuName, NULL

mov wc.lpszClassName, OFFSET ClassName invoke LoadIcon, NULL, IDI_APPLICATION mov wc.hIcon, eax mov wc.hIconSm, eax

invoke LoadCursor, NULL, IDC_ARROW mov wc.hCursor, eax

invoke RegisterClassEx, addr wc

INVOKE CreateWindowEx, NULL, ADDR ClassName, ADDR AppName,\\ WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,\\ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL,\\ hInst, NULL mov hwnd, eax

INVOKE ShowWindow, hwnd, SW_SHOWNORMAL INVOKE UpdateWindow, hwnd

.WHILE TRUE INVOKE GetMessage, ADDR msg, NULL, 0, 0 .BREAK .IF (!eax) INVOKE TranslateMessage, ADDR msg INVOKE DispatchMessage, ADDR msg .ENDW

mov eax, msg.wParam ret

WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM local @stPs:PAINTSTRUCT local @stRect:RECT

local @hDc

local @playf:WORD

.IF uMsg == WM_DESTROY invoke midiOutClose, hdc invoke PostQuitMessage, NULL .ELSEIF uMsg == WM_PAINT invoke BeginPaint, hWnd, addr @stPs mov @hDc,eax invoke GetClientRect, hWnd, addr @stRect invoke DrawText, @hDc, addr szText, -1, addr @stRect,\\ DT_SINGLELINE or DT_CENTER or DT_VCENTER invoke EndPaint, hWnd, addr @stPs .ELSEIF uMsg == WM_CHAR mov @playf, 0h push wParam pop midiPu ;===============ESC键的功能================ .if midiPu==WM_DEVMODECHANGE invoke midiOutClose, hdc invoke PostQuitMessage, NULL .endif ;---------------音调--------------------- .if midiPu == 61h ; 'a' mov midiYu, -24 .elseif midiPu == 62h ; 'b' mov midiYu, -12 .elseif midiPu == 63h ; 'c' mov midiYu, 0 .elseif midiPu == 64h ; 'd' mov midiYu, 12 .elseif midiPu == 65h ; 'e' mov midiYu, 24 .elseif midiPu == 66h ; 'f' mov midiYu, 36 .elseif midiPu == 67h ; 'g' mov midiYu, 48 ;===============全音==== .elseif midiPu == 31h mov midiPu, 3ch

mov @playf, 1

;1bh

.elseif midiPu == 32h mov midiPu, 3eh mov @playf, 1 .elseif midiPu == 33h mov midiPu, 40h mov @playf, 1 .elseif midiPu == 34h mov midiPu, 41h mov @playf, 1 .elseif midiPu == 35h mov midiPu, 43h mov @playf, 1 .elseif midiPu == 36h mov midiPu, 45h mov @playf, 1 .elseif midiPu == 37h mov midiPu, 47h mov @playf, 1 ;================半音==== .elseif midiPu == 71h ; 'q' mov midiPu, 3dh mov @playf, 1 .elseif midiPu == 77h ; 'w' mov midiPu, 3fh mov @playf, 1 .elseif midiPu == 72h ; 'r' mov midiPu, 42h mov @playf, 1 .elseif midiPu == 74h ; 't' mov midiPu, 44h mov @playf, 1 .elseif midiPu == 79h ; 'y' mov midiPu, 46h mov @playf, 1 .endif

;------------------------------------------- .if @playf == 1 mov eax, midiYu add midiPu, eax mov cl, 8

shl midiPu, cl and midiPu, 0ff00h add midiPu, 680090h .if midiPlayFlag == 1h ;================调用声卡的代码==== invoke midiOutShortMsg, hdc, midiPu mov midiPlayFlag, 0h ;-------------------声卡代码结束------------------------ .endif .endif

.ELSEIF uMsg == WM_KEYUP mov midiPlayFlag, 1h .elseif uMsg == WM_CREATE invoke midiOutOpen, ADDR hdc, -1, NULL, NULL, NULL mov midiYu, 0h mov midiPlayFlag, 1h .ELSE invoke DefWindowProc, hWnd, uMsg, wParam, lParam ret .ENDIF xor eax, eax ret

WndProc endp end start

联系合同范文客服:xxxxx#qq.com(#替换为@)