C语言钢琴程序代码
把以下程序复制粘贴到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 instance
TCHAR szTitle[MAX_LOADSTRING];// The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];// The title bar text
TYPEFUNCREATE 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 strings
LoadString(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 it