⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 w32g_i.c

📁 linux上播放midi音乐,但是要一些设置.可网上查找. 软件名称: TiMidity++-2.13.0.tar
💻 C
📖 第 1 页 / 共 5 页
字号:
				break;		  }		  LoadIniFile(sp_temp,st_temp);		  PrefWndCreate(hMainWnd);		  break;      case IDM_MWDEBUG:#ifdef W32GUI_DEBUG		  if(IsWindowVisible(hDebugWnd))				ShowWindow(hDebugWnd,SW_HIDE);		  else				ShowWindow(hDebugWnd,SW_SHOW);#endif		  break;      case IDM_MHTOPIC:		  MessageBox(hwnd, "Not Supported.","Warning!",MB_OK);		  break;      case IDM_MHHELP:		  MessageBox(hwnd, "Not Supported.","Warning!",MB_OK);		  break;      case IDM_MHONLINEHELP:		  if (PlayerLanguage == LANGUAGE_JAPANESE) {			  ShellExecute(HWND_DESKTOP, NULL, "http://timidity-docs.sourceforge.jp/", NULL, NULL, SW_SHOWNORMAL);		  } else {			  ShellExecute(HWND_DESKTOP, NULL, "http://timidity.sourceforge.net/index.html.en", NULL, NULL, SW_SHOWNORMAL);		  }		  break;      case IDM_MHBTS:		  if (PlayerLanguage == LANGUAGE_JAPANESE) {			  ShellExecute(HWND_DESKTOP, NULL, "http://timidity-docs.sourceforge.jp/cgi-bin/kagemai-ja/guest.cgi", NULL, NULL, SW_SHOWNORMAL);		  } else {			  ShellExecute(HWND_DESKTOP, NULL, "http://timidity-docs.sourceforge.jp/cgi-bin/kagemai-en/guest.cgi", NULL, NULL, SW_SHOWNORMAL);		  }		  break;      case IDM_MHONLINEHELPCFG:		  ShellExecute(HWND_DESKTOP, NULL, "http://timidity-docs.sourceforge.jp/cgi-bin/hiki/hiki.cgi?%28ja%29timidity.cfg", NULL, NULL, SW_SHOWNORMAL);		  break;      case IDM_MHVERSION:		  VersionWnd(hwnd);		  break;      case IDM_MHTIMIDITY:		  TiMidityWnd(hwnd);		  break;      case IDM_FORCE_RELOAD:		  if (!w32g_play_active) {reload_cfg();}		  break;      case IDM_MHSUPPLEMENT:		  SupplementWnd(hwnd);		  break;	  default:		  UpdateOutputMenu(hwnd, wId);		  break;    }}void update_subwindow(void){  SUBWINDOW *s = subwindow;  int i;  for(i=0;s[i].hwnd!=NULL;i++){		if(IsWindow(*(s[i].hwnd)))  		s[i].status |= SWS_EXIST;		else {  		s[i].status = 0;    	continue;    }		if(IsIconic(*(s[i].hwnd)))  		s[i].status |= SWS_ICON;		else  		s[i].status &= ~ SWS_ICON;		if(IsWindowVisible(*(s[i].hwnd)))  		s[i].status &= ~ SWS_HIDE;		else  		s[i].status |= SWS_HIDE;	}}void MainWndSetPauseButton(int flag){	if(flag)  	SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_MAIN,    	TB_CHECKBUTTON, IDM_PAUSE, (LPARAM)MAKELONG(TRUE, 0));	else  	SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_MAIN,    	TB_CHECKBUTTON, IDM_PAUSE, (LPARAM)MAKELONG(FALSE, 0));}void MainWndSetPlayButton(int flag){	return;}void MainWndUpdateConsoleButton(void){	if(IsWindowVisible(hConsoleWnd))  	SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND,    	TB_CHECKBUTTON, IDM_CONSOLE, (LPARAM)MAKELONG(TRUE, 0));	else  	SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND,    	TB_CHECKBUTTON, IDM_CONSOLE, (LPARAM)MAKELONG(FALSE, 0));}void MainWndUpdateListButton(void){	if(IsWindowVisible(hListWnd))  	SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND,    	TB_CHECKBUTTON, IDM_LIST, (LPARAM)MAKELONG(TRUE, 0));	else  	SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND,    	TB_CHECKBUTTON, IDM_LIST, (LPARAM)MAKELONG(FALSE, 0));}void MainWndUpdateDocButton(void){	if(IsWindowVisible(hDocWnd))  	SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND,    	TB_CHECKBUTTON, IDM_DOC, (LPARAM)MAKELONG(TRUE, 0));	else  	SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND,    	TB_CHECKBUTTON, IDM_DOC, (LPARAM)MAKELONG(FALSE, 0));}void MainWndUpdateTracerButton(void){	if(IsWindowVisible(hTracerWnd))		SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND,			TB_CHECKBUTTON, IDM_TRACER,			(LPARAM)MAKELONG(TRUE, 0));   else  		SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND,			TB_CHECKBUTTON, IDM_TRACER,			(LPARAM)MAKELONG(FALSE, 0));}void MainWndUpdateWrdButton(void){	if(IsWindowVisible(hWrdWnd))  	SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND,    	TB_CHECKBUTTON, IDM_WRD, (LPARAM)MAKELONG(TRUE, 0));	else  	SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND,    	TB_CHECKBUTTON, IDM_WRD, (LPARAM)MAKELONG(FALSE, 0));}void MainWndUpdateSoundSpecButton(void){}#undef SUBWINDOW_POS_IS_OLD_CLOSED_WINDOWvoid ShowSubWindow(HWND hwnd,int showflag){	int i, num;	RECT rc;#ifdef SUBWINDOW_POS_IS_OLD_CLOSED_WINDOW	RECT rc2;#endif	int max = 0;	if(showflag){		if(IsWindowVisible(hwnd))  		return;		for(i=0;SubWindowHistory[i].hwnd!=NULL;i++)  		if(*(SubWindowHistory[i].hwnd)==hwnd)      	num = i;		for(i=0;SubWindowHistory[i].hwnd!=NULL;i++)  		if(*(SubWindowHistory[i].hwnd)!=hwnd){	  		if(SubWindowHistory[i].status > 0)					SubWindowHistory[i].status += 1;	  		if(SubWindowHistory[i].status>SubWindowMax){					if(SubWindowHistory[i].status>max){    				GetWindowRect(*(SubWindowHistory[i].hwnd), &rc);						max = SubWindowHistory[i].status;					}      		ShowWindow(*(SubWindowHistory[i].hwnd),SW_HIDE);					SubWindowHistory[i].status = 0;				}			}#ifdef SUBWINDOW_POS_IS_OLD_CLOSED_WINDOW		// 僒僽僂僀儞僪僂傪嵟戝悢傪墇偊偰暵偠傜傟傞屆偄僂僀儞僪僂偵崌傢偣傞巇條偼巭傔傞偙偲偵偟偨丅		if(max>0){			GetWindowRect(hwnd, &rc2);			MoveWindow(hwnd,rc.left,rc.top,rc2.right-rc2.left,rc2.bottom-rc2.top,TRUE);		}#endif		ShowWindow(hwnd,SW_SHOW);		SubWindowHistory[num].status = 1;	} else {		if(!IsWindowVisible(hwnd))  		return;		for(i=0;SubWindowHistory[i].hwnd!=NULL;i++)  		if(*(SubWindowHistory[i].hwnd)==hwnd)      	num = i;		for(i=0;SubWindowHistory[i].hwnd!=NULL;i++)    	if(i!=num)	  		if(SubWindowHistory[i].status>=SubWindowHistory[num].status)					SubWindowHistory[i].status -= 1;    ShowWindow(hwnd,SW_HIDE);		SubWindowHistory[num].status = 0;	}	MainWndUpdateConsoleButton();	MainWndUpdateListButton();	MainWndUpdateTracerButton();	MainWndUpdateDocButton();	MainWndUpdateWrdButton();	MainWndUpdateSoundSpecButton();}void ToggleSubWindow(HWND hwnd){	if(IsWindowVisible(hwnd))		ShowSubWindow(hwnd,0);  else		ShowSubWindow(hwnd,1);}void OnShow(void){  SUBWINDOW *s = subwindow;	int i;  for(i=0;s[i].hwnd!=NULL;i++)		if(s[i].status & SWS_EXIST) {			if(s[i].status & SWS_HIDE)    		ShowWindow(*(s[i].hwnd),SW_HIDE);			else    		ShowWindow(*(s[i].hwnd),SW_SHOW);		}}void OnHide(void){  SUBWINDOW *s = subwindow;	int i;  for(i=0;s[i].hwnd!=NULL;i++){		if(s[i].status & SWS_EXIST)    	ShowWindow(*(s[i].hwnd),SW_HIDE);  }}#ifdef W32GUI_DEBUGvoid DebugThread(void *args){	MSG msg;	DebugThreadExit = 0;	InitDebugWnd(NULL);	AttachThreadInput(GetWindowThreadProcessId(hDebugThread,NULL),   	GetWindowThreadProcessId(hWindowThread,NULL),TRUE);	AttachThreadInput(GetWindowThreadProcessId(hWindowThread,NULL),   	GetWindowThreadProcessId(hDebugThread,NULL),TRUE);	while( GetMessage(&msg,NULL,0,0) ){		TranslateMessage(&msg);		DispatchMessage(&msg);	}	DebugThreadExit = 1;	crt_endthread();}void DebugThreadInit(void){	DWORD dwThreadID;	if(!DebugThreadExit)   	return;	hDebugThread = crt_beginthreadex(NULL,0,DebugThread,0,0,&dwThreadID);}#endif//-----------------------------------------------------------------------------// Toolbar Mainstatic TBBUTTON MainTbb[] = {    {4, IDM_STOP, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},    {3, IDM_PAUSE, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0},    {0, IDM_PREV, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},    {1, IDM_BACKWARD, TBSTATE_ENABLED,TBSTYLE_BUTTON, 0, 0},    {2, IDM_PLAY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},    {5, IDM_FOREWARD, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},    {6, IDM_NEXT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}};static void InitMainToolbar(HWND hwnd){	TBADDBITMAP MainTbab;  SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN,  		TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);  SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN,  		TB_SETBUTTONSIZE, (WPARAM)0, (LPARAM)MAKELONG(16,16));	MainTbab.hInst = hInst;	MainTbab.nID =(int)IDB_BITMAP_MAIN_BUTTON;  SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN,  	TB_ADDBITMAP, 7, (LPARAM)&MainTbab);  SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN,  	TB_ADDBUTTONS, (WPARAM)7,(LPARAM)&MainTbb);  SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN,		TB_AUTOSIZE, 0, 0);}//-----------------------------------------------------------------------------// Toolbar SubWndstatic TBBUTTON SubWndTbb[] = {    {3, IDM_CONSOLE, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0},    {1, IDM_LIST, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0},    {2, IDM_TRACER, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0},    {0, IDM_DOC, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0},    {4, IDM_WRD, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0},};static void InitSubWndToolbar(HWND hwnd){	TBADDBITMAP SubWndTbab;  SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND,  		TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);  SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND,  		TB_SETBUTTONSIZE, (WPARAM)0, (LPARAM)MAKELONG(16,16));	SubWndTbab.hInst = hInst;	SubWndTbab.nID =(int)IDB_BITMAP_SUBWND_BUTTON;  SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND,  	TB_ADDBITMAP, 5, (LPARAM)&SubWndTbab);  SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND,  	TB_ADDBUTTONS, (WPARAM)5,(LPARAM)&SubWndTbb);  SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND,		TB_AUTOSIZE, 0, 0);}//-----------------------------------------------------------------------------// Canvas Window#define MAPBAR_LIKE_TMIDI	// note bar view like tmidi#define TM_CANVAS_XMAX 160#define TM_CANVAS_YMAX 160#define TM_CANVASMAP_XMAX 16#define TM_CANVASMAP_YMAX 16#define CANVAS_XMAX 160#define CANVAS_YMAX 160#define CMAP_XMAX 16#define CMAP_YMAX 16#define CK_MAX_CHANNELS 16#define CMAP_MODE_16		1#define CMAP_MODE_32		2#define CMAP_MAX_CHANNELS	32struct Canvas_ {	HWND hwnd;	HWND hParentWnd;	RECT rcMe;	int Mode;	HDC hdc;	HDC hmdc;	HGDIOBJ hgdiobj_hmdcprev;	int UpdateAll;	int PaintDone;	HANDLE hPopupMenu;	HANDLE hPopupMenuKeyboard;// Sleep mode	RECT rcSleep;	HBITMAP hbitmap;	HBITMAP hBitmapSleep;	int SleepUpdateFlag;// Map mode	RECT rcMap;	char MapMap[CMAP_MAX_CHANNELS][CMAP_YMAX];	char MapMapOld[CMAP_MAX_CHANNELS][CMAP_YMAX];	char MapBar[CMAP_MAX_CHANNELS];	char MapBarOld[CMAP_MAX_CHANNELS];	int MapDelay;	int MapResidual;	int MapUpdateFlag;	int MapMode;	int MapBarWidth;	int MapBarMax;   int MapCh;   int MapPan[CMAP_MAX_CHANNELS];   int MapPanOld[CMAP_MAX_CHANNELS];   int MapSustain[CMAP_MAX_CHANNELS];   int MapSustainOld[CMAP_MAX_CHANNELS];   int MapExpression[CMAP_MAX_CHANNELS];   int MapExpressionOld[CMAP_MAX_CHANNELS];   int MapVolume[CMAP_MAX_CHANNELS];   int MapVolumeOld[CMAP_MAX_CHANNELS];   int MapPitchbend[CMAP_MAX_CHANNELS];   int MapPitchbendOld[CMAP_MAX_CHANNELS];   int MapChChanged;	ChannelBitMask DrumChannel;   RECT rcMapMap;   RECT rcMapSub;// Keyboard mode	RECT rcKeyboard;	uint32 CKxnote[MAX_W32G_MIDI_CHANNELS][4];	uint32 CKxnote_old[MAX_W32G_MIDI_CHANNELS][4];	int CKNoteFrom;   int CKNoteTo;	int CKCh;	int CKPart;	RECT rcGSLCD;	int8 GSLCD[16][16];	int8 GSLCD_old[16][16];	int KeyboardUpdateFlag;  	int xnote_reset;// misc   Channel channel[MAX_W32G_MIDI_CHANNELS];} volatile Canvas;#define IDC_CANVAS 4242static HWND hCanvasWnd;static char CanvasWndClassName[] = "TiMidity Canvas";static LRESULT CALLBACK CanvasWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam);static void CanvasPaintDo(void);#define IDM_CANVAS_SLEEP		2321#define IDM_CANVAS_MAP        2322#define IDM_CANVAS_KEYBOARD   2323#define IDM_CANVAS_REDRAW     2324#define IDM_CANVAS_MAP16      2325#define IDM_CANVAS_MAP32      2326#define IDM_CANVAS_KEYBOARD_A   2327#define IDM_CANVAS_KEYBOARD_B   2328#define IDM_CANVAS_KEYBOARD_C   2329#define IDM_CANVAS_GSLCD   2330static void InitCanvasWnd(HWND hwnd){	WNDCLASS wndclass ;	hCanvasWnd = 0;	wndclass.style         = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS | CS_CLASSDC;	wndclass.lpfnWndProc   = CanvasWndProc ;	wndclass.cbClsExtra    = 0 ;	wndclass.cbWndExtra    = 0 ;	wndclass.hInstance     = hInst ;	wndclass.hIcon         = NULL;	wndclass.hCursor       = LoadCursor(0,IDC_ARROW) ;	wndclass.hbrBackground = (HBRUSH)(COLOR_SCROLLBAR + 1);	wndclass.lpszMenuName  = NULL;	wndclass.lpszClassName = CanvasWndClassName;	RegisterClass(&wndclass);   hCanvasWnd = CreateWindowEx(0,CanvasWndClassName,0,WS_CHILD,CW_USEDEFAULT,   	0,CANVAS_XMAX,CANVAS_YMAX,GetDlgItem(hwnd,IDC_RECT_CANVAS),0,hInst,0);	CanvasInit(hCanvasWnd);	CanvasReset();	CanvasClear();	CanvasReadPanelInfo(1);	CanvasUpdate(1);	CanvasPaintAll();	ShowWindow(hCanvasWnd,SW_SHOW);	UpdateWindow(hCanvasWnd);}static LRESULT CALLBACKCanvasWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam){	switch (uMess)	{		case WM_CREATE:			Canvas.hPopupMenuKeyboard = CreatePopupMenu();			AppendMenu(Canvas.hPopupMenuKeyboard,MF_STRING,IDM_CANVAS_KEYBOARD_A,"A Part");			AppendMenu(Canvas.hPopupMenuKeyboard,MF_STRING,IDM_CANVAS_KEYBOARD_B,"B Part");			Canvas.hPopupMenu = CreatePopupMenu();			AppendMenu(Canvas.hPopupMenu,MF_STRING,IDM_CANVAS_GSLCD,"LCD Mode");			AppendMenu(Canvas.hPopupMenu,MF_STRING,IDM_CANVAS_MAP16,"Map16 Mode");			AppendMenu(Canvas.hPopupMenu,MF_STRING,IDM_CANVAS_MAP32,"Map32 Mode");			//	AppendMenu(Canvas.hPopupMenu,MF_STRING,IDM_CANVAS_KEYBOARD,"Keyboard Mode");			AppendMenu(Canvas.hPopupMenu,MF_POPUP,(UINT)Canvas.hPopupMenuKeyboard,"Keyboard Mode");			AppendMenu(Canvas.hPopupMenu,MF_STRING,IDM_CANVAS_SLEEP,"Sleep Mode");			AppendMenu(Canvas.hPopupMenu,MF_SEPARATOR,0,0);			AppendMenu(Canvas.hPopupMenu,MF_STRING,IDM_CANVAS_REDRAW,"Redraw");			break;		case WM_DESTROY:			DestroyMenu ( Canvas.hPopupMenuKeyboard );			Canvas.hPopupMenuKeyboard = NULL;			break;		case WM_PAINT:			CanvasPaintDo();    		return 0;		case WM_LBUTTONDBLCLK:			w32g_send_rc(RC_EXT_MODE_CHANGE, 0);			break;      case WM_RBUTTONDOWN:      {      	RECT rc;      	GetWindowRect(Canvas.hwnd,(RECT *)&rc);				SetForegroundWindow ( Canvas.hwnd );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -