C语言钢琴程序代码.doc_第1页
C语言钢琴程序代码.doc_第2页
C语言钢琴程序代码.doc_第3页
C语言钢琴程序代码.doc_第4页
C语言钢琴程序代码.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

把以下程序复制粘贴到Visual c+6.0,点编译与连接,不要点编译,不然会出错,这个程序就没用了,在强调一下:点编译与链接。然后点执行,就可以开始弹钢琴了。最后附有一些歌曲的代码,你可以试试看。/ 钢琴.cpp : Defines the entry point for the application./#include stdafx.h#include resource.h#include typedef void (*TYPEFUNCREATE)(HWND hwnd);typedef void (*TYPEFUNPLAY)(char ch);#define MAX_LOADSTRING 100/ Global Variables:HINSTANCE hInst;/ current instanceTCHAR szTitleMAX_LOADSTRING;/ The title bar textTCHAR szWindowClassMAX_LOADSTRING;/ The title bar textTYPEFUNCREATE g_pCreateFun = NULL;TYPEFUNPLAY g_pPlayFun = NULL;TYPEFUNCREATE g_pReleaseFun = NULL;HMODULE g_hdll = NULL;BOOL g_isHack = FALSE;LPCTSTR g_szSoundFile = sound1.txt,sound2.txt,sound3.txt;int g_nFileIndex = 0;int g_nCurPosition = 0;/ Foward declarations of functions included in this code module:ATOMMyRegisterClass(HINSTANCE hInstance);BOOLInitInstance(HINSTANCE, int);LRESULT CALLBACKWndProc(HWND, UINT, WPARAM, LPARAM);LRESULT CALLBACKAbout(HWND, UINT, WPARAM, LPARAM);int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) / TODO: Place code here.MSG msg;HACCEL hAccelTable;/ Initialize global stringsLoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);LoadString(hInstance, IDC_MY, szWindowClass, MAX_LOADSTRING);MyRegisterClass(hInstance);/ Perform application initialization:if (!InitInstance (hInstance, nCmdShow) return FALSE;hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_MY);/ Main message loop:while (GetMessage(&msg, NULL, 0, 0) if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg) TranslateMessage(&msg);DispatchMessage(&msg);return msg.wParam;/ FUNCTION: MyRegisterClass()/ PURPOSE: Registers the window class./ COMMENTS:/ This function and its usage is only necessary if you want this code/ to be compatible with Win32 systems prior to the RegisterClassEx/ function that was added to Windows 95. It is important to call this function/ so that the application will get well formed small icons associated/ with it./ATOM MyRegisterClass(HINSTANCE hInstance)WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX); wcex.style= CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc= (WNDPROC)WndProc;wcex.cbClsExtra= 0;wcex.cbWndExtra= 0;wcex.hInstance= hInstance;wcex.hIcon= LoadIcon(hInstance, (LPCTSTR)IDI_MY);wcex.hCursor= LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground= (HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName= (LPCSTR)IDC_MY;wcex.lpszClassName= szWindowClass;wcex.hIconSm= LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);return RegisterClassEx(&wcex);/ FUNCTION: InitInstance(HANDLE, int)/ PURPOSE: Saves instance handle and creates main window/ COMMENTS:/ In this function, we save the instance handle in a global variable and/ create and display the main program window./BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) HWND hWnd; hInst = hInstance; / Store instance handle in our global variable hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE;/ FUNCTION: WndProc(HWND, unsigned, WORD, LONG)/ PURPOSE: Processes messages for the main window./ WM_COMMAND- process the application menu/ WM_PAINT- Paint the main window/ WM_DESTROY- post a quit message and return/LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)int wmId, wmEvent;PAINTSTRUCT ps;HDC hdc;TCHAR szHelloMAX_LOADSTRING;LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);switch (message) case WM_CREATE: /加载动态库 g_hdll = :LoadLibrary(piano_dll.dll); /得到导出函数地址 g_pCreateFun = (TYPEFUNCREATE):GetProcAddress(g_hdll,fun_Create); g_pPlayFun = (TYPEFUNPLAY):GetProcAddress(g_hdll,fun_playOneSound); g_pReleaseFun = (TYPEFUNCREATE):GetProcAddress(g_hdll,fun_Release); g_pCreateFun(hWnd); break;case WM_COMMAND:wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); / Parse the menu selections:switch (wmId) case IDM_SOUND1: g_nFileIndex = 1; g_nCurPosition = 0; break; case IDM_SOUND2: g_nFileIndex = 2; g_nCurPosition =0; break; case IDM_HACK: :SetWindowText(hWnd,pian0); g_isHack = TRUE; break; case IDM_NORMAL: :SetWindowText(hWnd,piano); g_isHack = FALSE; break;case IDM_ABOUT: DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); break;case IDM_EXIT: DestroyWindow(hWnd); break;default: return DefWindowProc(hWnd, message, wParam, lParam);break;case WM_PAINT:hdc = BeginPaint(hWnd, &ps);/ TODO: Add any drawing code here.RECT rt;GetClientRect(hWnd, &rt);DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);EndPaint(hWnd, &ps);break;case WM_DESTROY: /释放 g_pReleaseFun(hWnd); if ( g_hdll != NULL) :FreeLibrary(g_hdll); PostQuitMessage(0); break; case WM_CHAR: if ( !g_isHack ) g_pPlayFun(char)wParam); else char ch; FILE *fp = fopen(g_szSoundFileg_nFileIndex,rb); if ( fp != NULL ) while( true) fseek(fp,g_nCurPosition,SEEK_SET); if ( fread( &ch,sizeof(char),1,fp) ) if ( ch = | ch = 0x0D | ch = 0x0A ) g_nCurPosition+; continue; g_pPlayFun(char)ch); g_nCurPosition+; else g_nCurPosition = 0; break; fclose(fp); default:return DefWindowProc(hWnd, message, wParam, lParam); return 0;/ Mesage handler for about box.LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)switch (message)case WM_INITDIALOG:return TRUE;case WM_COMMAND:if (LOWORD(wParam) = IDOK | LOWORD(wParam) = IDCANCEL) EndDialog(hDlg, LOWORD(wParam);return TRUE;break; return FALSE;LOQSONQS STUVTS QPOOO QPOOO PQPOMPQP LOQSONQS STUVTS QPOOO QPOOO PQPMNOPO QSQPOSN MNMNMLQ SQPOSN MNOOOPQP LOQSONQS STUVTS QPOOO QPOOO PQPMNOPO 童话 LONOL LONOL LONO OOMML LONOL LQPPO LONOM MMOTS PPRRQQ QQNPOONO ONOR LSRQP PPRRQQ QQVUTUV VPOT TTSSS LSRQQRQ QRQ RQPO OQST TTSPPRQ OQST TTSPPRQRQPO PQMMOONO 安静 QQQQPONPPPO LQPOOOLQPOOP QQQQPONPPPO LQPOOOLQPOOPPQR RRRRQPOOOPP LSSSRQPPPQQ MRQRQPOONOL QRQRQPOPS LQRSRQSLQRSRQS LQRSRQOPPPQO SSOONOOSSOONOO RRQQPPORRQQPPO LQRSRQSLQRSRQS LQRSRQOPPPQO SSOONOOSSOONOO RRQQPPOORQPOMOO 好好恋爱 JKLLLLLKJIIL NNONOOOPQNNL HMMMJMOLLLLJH KKKJKLMMMOML JKJJKLLLLJIHHO NMLML JHHMMLLLKJ OOOONOPP LRQLLRPLRQRQRQPO ONMMQMQMLLQLQL RQRQOP LRQLLRSPLRQQQRQPQ ONMMQMQMLLQLQPOM OPNMNMNQPOO 痴心绝对 OPQQQRQPPOPPSP ONOOOQQOOMNNQN MLMMMRRQSO MLMMMRROOMP OOPQQQRQPPOPPSP ONOOOQQOOMNNQN MLMMRRQSO MLMMMRROOONO 会呼吸的痛 STVTXXTW WWVUVWXWSV VUTUVRRRVVWVSSS SYXWXX STVTXXTW WWVUVWXWSVV VUTUVRRRVVWVSSS STUVVUVV 欢乐颂 J J K L L K J I H H I J J I I J J K L L K J I H H I J I H H I I J H I J K J H I J K J I H I E J J K L L K J I H H I J I H H 小星星 OOSSTTS RRQQPPO SSRRQQP SSRRQQP OOSSTTS RRQQPPO 千千阙歌 HHIJ LMONNNLJ IIIJK MOQPPNL HHIJ LMONNNLJ IIIJK MOQPPNL MLMLMNNMN PPPPNOPQ QQPPPOQ NLM LMOPQQPQ QPOP OMM LMOP QQPQ QSTSQQ QQPPOPOM QQRQPOP QQ Q P POP OMOO 婚礼进行曲 HKKK HLJK HKNNMLKJKL HKKK HLJK HKMOMKILMK NMLII JKLL NMLII JKLL HKKK HLJK HKMOMKILMK ILMKK 樱花 MMN- MMN- (-延长音的意思) MNON MNMK- (下划线是连音的意思) J HJ K JJHG- MMN MMN JKNMK J 想唱就唱 onopol jkkklj onopol lmmmon onopqolj opolj onopqolo rqpoq qrst oopqp pqrs srqpq qrstss uuvuspq rqrs qrst oopqp pqs quuqv vuvtsoo tsrqrs ts qrst oopqp pqrs srqpq qrstss uuvuspq rqrs qrst oopqp pqs quuqv vuvtsoo tsrqrs 梦里 qqqqqqpo lmoooomq qqqqstsqp lpppppsq qqrs oopq llmoqpsq qqrs oopq llmoqpoo opqrsssrqrss ssssvtsq qqpo opm moppppqp opqrsssrqrss ssssvtsq qqpo opm mopqqqqpom qqqqqqpo lmoooomq qqqqstsqp lpppppsq qqrs oopq llmoqpsq qqrs oopq llmoqpoo opqrsssrqrss ssssvtsq qqpo opm moppppqp opqrsssrqrss ssssvtsq qqpo opm mopqqqqmpqt 女人花 JLLML ILLML HIJOMJL MOOPO MLMJIH FHILJIH JLQ QQPPOL JLO OOMMLJ JLQ QQPPOM MOP PPQNML JLLML ILLML HIJOMJL MOOPO MLMJIH FHILJIH 菊花台 JJIJ JLJIJ HHIJLJ IIHI J LJML MLLJL EJIILJIIIHI JJIJ JLJIJ HHIJLJ IIHI J LJML MLLJL JIJLJIIH HIJJLM MQQPOML MLJIH FHIIHI HIJJLM MQPOOPO LLJNOHIJIH 约定 LOPQPOQPLL JMNONMONJL MLLKKOJJPO PQRQQPOMP LOPQPOQPNL QMNONMONJL MLLKKOPQO MNOMOTSS POSQ QPONOMJM OPOTR RQRMNOP QRSSSTO SNPO PQMORQRSP POSQ QPONOMJM OPOTR RQRMNOP QRSSSTO SNPO PQRMRQOPO 美丽的神话 MQN MOPOQ MTSTSPRQ MTSPQRQ O MQPNM MQNMOPOQ MTSTSPRQ MTSPQRQPO MPONM MNOPQONL MOPQQ MNOPQONLMOPOO MPONM MNOPQONL MOPQQ MNOPQONLMOPOO OOPQONLONMNT 有没有人告诉你 JMMMMMMMMJKLK JLLLLLLLMNNJ JMMMMMMMMQQP NNNNNJONON JMMMMMMMMJKLK ILLLLLLLMNNJ JMMMMMMMMQQP NNNNNNNMNM QTQQQQOMJJQP JSSSSSSSTUUQ QTQQQQOMJJQP PPPPPJNNM 卡农(括号里的一起弹) H-JLO E-ILN F-HJM C-GIL D-FHK A-EHJ D-FHK E-GIL (HQ)-JLO (EP)-GIL (OF)-HJM (NC)-GJL (MD)-FHK (LA)-CEH (MD)-FHK (NE)-GIL ONOH (G B )LIJ (CH)ONM (CN)QST (DR)QPR (QA)PON (DM)LKJ (EI)KJI (EH)IJK (EG)ILK (FJ)MLK (CL)KJI (DH)FMN (AO)NML (DK)JIM LML (SJ)QRS-QR(SE)LMNOPQR (FQ)OPQ-JK(GL)MLKLJKL (FK)MLK-JI(JE)IHIJKLM (FK)MLM-NO(GL)MNOPQRS (SI)QRS-QR(SE)LMNOPQR (FQ)OPQ-JK(GL)MLKLJKL (FK)MLK-JI(EJ)IHIJKLM (FK)MLM-NO(GL)MNOPQRS (HQ)-JLO (EP)-GIL (OF)-HJM (NC)-GJL (MD)-FHK (LA)-CEH (MD)-FHK (NE) 月亮代表我的心 LOQSONQS STUVTS QPOOO QPOOO PQPOMPQP LOQSONQS STUVTS QPOOO QPOOO PQPMNOPO QSQPOSN MNMNMLQ SQPOSN MNOOOPQP LOQSONQS STUVTS QPOOO QPOOO PQPMNOPO 我和你 qso pqm opqs p qso pqm plpq o t s t o pmqs p qso pqm plpq o 画心 LJJ IHIILJ LJJIHILmJ LJJIHIHGHIGEF CEF FJIHGEF EEFFHGFEBC CCEFGHEHIJ LJJ IHIHGHIGEF CEFFJIHGEF CEFHGFEFC CEFFGHEHIJ LJJ IHIHGHIGEF CEFFJIHGEF LJJ IHIHGHIGEF CEFFJIHGEF LJJIHIILJ LJJIHILmJ LJJIHIHGHIGEF CEFFJIHGEF 安静 QQQQPONPPPO LQPOOOLQPOOP QQQQPONPPPO LQPOOOLQPOOPPQR RRRRQPOOOPP LSSSRQPPPQQ MRQRQPOONOL QRQRQPOPS LQRSRQSLQRSRQS LQRSRQOPPPQO SSOONOOSSOONOO RRQQPPORRQQPPO LQRSRQSLQRSRQS LQRSRQOPPPQO SSOONOOSSOONOO RRQQPPOORQPOMOO 粉刷匠 LJLJLJH IKJHL LJLJLJH IKJIH IIKKJHL IKJHL LJLJLJH ILJIH 不能说的秘密 EHHH EGGG EHHH EIII EHHH EGGG EHHH EIII EKKKK KJJ KKKLJIHGGH ELLLL LKK LLLLLKKJJI EKKKK KJJ KKKLJIHGGIH FHLMH LLLLLKKJJI HONOOLLLLKKJ HONOOLLLLPPO HONONMHNMNML HMLMLKKJKLMML HONOOLLLLKKJ HONOOLLLLPPO HONONM HNMNML HMLMLKKJKLMML HLHKJ HHLHKJH 生日快乐 LLMLON LLMLPO LLSQONM RRQOPO (SSTSVU SSTSWV SSZXVUT YYXVWV) HIJJIJKJIGE FGHHIJJMLJL JLMMMLK JKLLKJ JKKLKHI HIJJIJKJIGE FGHHIJJMLJL JLMMMLK JKLLKJ JKJHIH HHEFGHHIJHE EDDFEDE EFFGJIIHGH HHFEFG EEEJIHHIJHL JJLMMNOLJ JJLMMMKMNMLKLJ JKJKLMLL EJIHHIJHL JJLMMNONJ JJLMMMKMNMLJIH JKJKLMLLJIHH 北京欢迎你 QSQPQPQ QPMOQP OMOPQSP QTSLPO POMOPQSP QTSSQ PQPOSTQ MQPPO QSVST STSQQSS QSTVWVSQPSQQ 為你寫詩 (中段) LJHM MLJI IJKLLJIH HIJKJIHHF HKJHML LJHM MLJI IJKLLLNM MLJK KJHHEIJ MLJK KJHHEIH 蒲公英的約定(第一段及中段) JKLLLLMNO ONPMLLPOQQ OPQQRQPQO MNOPOOMQQP JKLLLLMNO ONPMLLPOQQ OPQQQMNLPO ONPMLLPOQQ JLOQQRP PSNO QRSOOPQQ JLOPQRP PSNO QRSOOPO 世界末日(中段) JKL KJJ JIHIJLL MLK LKJ KJHJI HIJNONMLJH JJKJHJI JKL KJJ JIHIJNL MLK LKJ KKQRQP HIJNONMLJH JJKKJL JIHH 笑忘書(中段) MLIJKJ JIGHIH HMMHHLL FKKJKLI MLIJKJ PONOPO HM HL FK FJI JIH 終身美麗 IJIJKL JIHFHJ HHKJH HHFFIHG HIJJIJJKL JIHFHKJ HHKML HGFGH GHHJNL JIHHIKJ IHHJNL JLMFKJI HIJJIJJKL JIHFHKJ HMLKLMLH HMLKKLML LOOOLKJ HJONNNLKJ LLMMMLKK MMNMLNQN LOOOLKJ HJONMLMNL LKJK LKJI IHGL NLIJ JKFIHG GGHIH LKJK JKJI IHGLJIJ JKMOMLK JIJH 離家出走 STSQP SQPPO OOPQO OPPOQP STSQS VUSQSTS PQRQORQPO SZRQRSTSRQP QRSTS VUTUVVVUTUS QRSSTTQPPQRRSSPO ORQRQRRSTS QRTSVV SZZX VQQQPQUUUVTOSTSQ RRRPTS VUSSVV SWWU VTVTV ZYX TVWXVW TVUUV TVWXYXYW VUVWVXX UVWUVQQQ QQUUVUV TOSTSV TVVUVW XWVSVV SWWU VTVTVZYX TVWXVW TVUTS 下一站天後 QQQSP PSOOOQM RQRTQ RSPPMOP QPQSSPQVUSST RQRSMOQPO QSUVUTSS QRSTRRQP POPQSS QTQPOP MOQPPQS VUTUT SSOQSS TTTRQP PPUS QQSO QQPPP TQS VUTUTSS OQSS TTTTVUTUVSSQSTSSRMNO 心亂如麻 TSRQRSRQ RRVUTSS QTS TSRQRSRQ RRTSVUV WVXWV VVUUVWS SQTS RRSQVUV WVXWV SXXXYXWV XXXYXWV SWWVWVXXW QSTTSS TVWWVV SZYXVVTTVXYXW SVWXYXVWX WVWVZZ XXTVX XTUVWV QRSTSVWUTS SYXSYXSXYZXVW QSTTSS TVWWVV SZYXVVTTVXYXW SVWXYXVWX WVWVZZ XXTVX XTUVWV 蝸牛 J JJKJIJIH HHK KIHHIJ HHL LMLKJK GH EEJ JKJIJH EEH HEHIJKL HONN NONMMNLHKLM MNOPQL EFLK KLKJIHI EEH HEHIJKL HONN NONMMNL HKLM MNOPQL EFLK KJIHHGH 123木頭人 LKJJJ III JIHIJO NML MKJKJK IJKONL MLL LKJJJ ILN MNONM J LMK KPOL IJKKJKL J I H 天空之城 mno noqn jjm lmol jjkjko j ooo nkknn mnonoqn jjm lmol jkono ppqo onmm nlm opqpqsp llonoqq mno nop oll rqpoq qt ss qpo o p opsq qtssqpo op opnm。 神秘園 jmno no opnmn nomlm lj jmno no opnmn nomlm lm nost tusrs noqr rsqpq nost tusrs strqr rsqpq jmno no opnmn nomlm lj jmno no opnmn nomlm lm 軌跡 qeee reee weewqe qwee eweq hqewqw qeee reee weewqte qwee eweq hqewqw qjqjwq jwqjq q ttqqt qgqrewe ee rewqj wewq qtrewqwet g r eee ereww weqq ett qttrr ewreq qq wEwqw gr eee ereww weqq ett qttrr ewreq qerw jq 無賴 HIJJIJKJIGE FGHHIJJMLJL JLMMMLK JKLLKJ JKKLKHI HIJJIJKJIGE FGHHIJJMLJL JLMMMLK JKLLKJ JKJHIH HHEFGHHIJHE EDDFEDE EFFGJIIHGH HHFEFG EEEJIHHIJHL JJLMMNOLJ JJLMMMKMNMLKLJ JKJKLMLL EJIHHIJHL JJLMMNONJ JJLMMMKMNMLJIH JKJKLMLLJIHH 海闊天空 QPO PQSSSSTS TUVVVVVVUTST TSS SQPO QRQPPQPP QPPPOOOO POO TUVVVVVVUTSSSQPO VVVVWWWVWX XWV VVVVWW SSXWV VVVVWWWWVUV TTUTUV VVWVWX XWXV 青花瓷Flash键盘钢琴谱 LLJ IJF IJLJ I LLJ IJE IJLI H HIJLMLJ LJJI I HIH IHI IJLJ J LLJ IJF IJLJI LLJ IJE IJLIH HIJ LMLJ LJJII EJIIH 夜曲Flash键盘钢琴谱 MN OOOONQQ TTTSRSOO RRRSQNQP PONOON OOOONQQ TTTSRSOO RRR QPNOM 暗香Flash键盘钢琴谱 JKJGHJM ONLJ JKJGHJM ONLQ MMMOQLKMP PQRPQRQ MPQRPQRM MQRSQRSM PQRMR SKPQPQRQ JKJGHJMONLJ JKJGHJMONLM 遇见Flash键盘钢琴谱 LJ LI JIH HGFGHGHIJ LJ LP ONO HGFGHGHIH LMNONONMLML HIJKJKLHIJ LMNONONPOPOQL HIJKJKJIHGH LMNONOPONML HIJKJKLHHML LMNONOPOPQL, HIJKJKLHHML LMNONOPOPQL, HIJIJILHIJH LMNONOMNLKL JJJKLJEE IIIJKIEE HHHIJIGH GFGHG FEFML IKJIH HGFIIHFFGH 波斯猫Flash键盘钢琴谱 OOOMLMLJJ MMMLJLJII OOOMOMOJJ IMJ JL M M M 致爱丽斯

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论