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

📄 w32g_subwin.c

📁 linux上播放midi音乐,但是要一些设置.可网上查找. 软件名称: TiMidity++-2.13.0.tar
💻 C
📖 第 1 页 / 共 4 页
字号:
		}		DestroyMenu(ListWndInfo.hPopupMenu);		ListWndInfo.hPopupMenu = NULL;		INISaveListWnd();		break;		/* 儅僂僗擖椡偑僉儍僾僠儍偝傟偰偄側偄偨傔偺張棟 */	case WM_SETCURSOR:		switch(HIWORD(lParam)){		case WM_RBUTTONDOWN:			if(LOWORD(lParam)!=HTCAPTION){	// 僞僀僩儖僶乕偵側偄偲偒				POINT point;				int res;				GetCursorPos(&point);				SetForegroundWindow ( hwnd );				res = TrackPopupMenu(ListWndInfo.hPopupMenu,TPM_TOPALIGN|TPM_LEFTALIGN,					point.x,point.y,0,hwnd,NULL);				PostMessage ( hwnd, WM_NULL, 0, 0 );				return TRUE;			}			break;		default:			break;		}		break;	case WM_CHOOSEFONT_DIAG:		{			char fontName[64];			int fontHeight;			int fontWidth;			strcpy(fontName,ListWndInfo.fontName);			fontHeight = ListWndInfo.fontHeight;			fontWidth = ListWndInfo.fontWidth;			if(DlgChooseFont(hwnd,fontName,&fontHeight,&fontWidth)==0){				ListWndSetFontListBox(fontName,fontWidth,fontHeight);			}		}		break;	case WM_LIST_SEARCH_DIAG:		ShowListSearch();		break;	case WM_COMMAND:			switch (HIWORD(wParam)) {			case IDCLOSE:				ShowWindow(hwnd, SW_HIDE);				MainWndUpdateListButton();				break;			case LBN_DBLCLK:				SendMessage(hwnd,WM_COMMAND,(WPARAM)IDM_LISTWND_PLAY,0);				return FALSE;			case LBN_SELCHANGE:				{				int idListBox = (int) LOWORD(wParam);				HWND hwndListBox = (HWND) lParam;				int selected, nfiles, cursel;				w32g_get_playlist_index(&selected,&nfiles,&cursel);				SetNumListWnd(cursel,nfiles);				return FALSE;				}			default:				break;			}			switch (LOWORD(wParam)) {			case IDC_BUTTON_CLEAR:				if(MessageBox(hListWnd,"Clear playlist?","Playlist",							  MB_YESNO)==IDYES)					w32g_send_rc(RC_EXT_CLEAR_PLAYLIST, 0);				return FALSE;			case IDC_BUTTON_REFINE:				if(MessageBox(hListWnd,							  "Remove unsupported file types from the playlist?",							  "Playlist",MB_YESNO) == IDYES)					w32g_send_rc(RC_EXT_REFINE_PLAYLIST, 0);				return FALSE;			case IDC_BUTTON_UNIQ:				if(MessageBox(hListWnd,							  "Remove the same files from the playlist and make files of the playlist unique?",							  "Playlist",MB_YESNO)==IDYES)					w32g_send_rc(RC_EXT_UNIQ_PLAYLIST, 0);				return FALSE;			case IDM_LISTWND_REMOVE:				w32g_send_rc(RC_EXT_DELETE_PLAYLIST, 0);				break;			case IDC_BUTTON_DOC: {					int cursel;					w32g_get_playlist_index(NULL, NULL, &cursel);					w32g_send_rc(RC_EXT_OPEN_DOC, cursel);				}				break;			case IDM_LISTWND_PLAY:				{					int new_cursel =  SendDlgItemMessage(hwnd,IDC_LISTBOX_PLAYLIST,LB_GETCURSEL,0,0);					int selected, nfiles, cursel;					w32g_get_playlist_index(&selected, &nfiles, &cursel);					if ( nfiles <= new_cursel ) new_cursel = nfiles - 1;					if ( new_cursel >= 0 )						w32g_send_rc(RC_EXT_JUMP_FILE, new_cursel );				}				return FALSE;			case IDM_LISTWND_CHOOSEFONT:				{ 					SendMessage(hwnd,WM_CHOOSEFONT_DIAG,0,0);				}				return FALSE;			case IDM_LISTWND_CURRENT:				{					int selected, nfiles, cursel;					w32g_get_playlist_index(&selected, &nfiles, &cursel);					SendDlgItemMessage(hwnd,IDC_LISTBOX_PLAYLIST,						LB_SETCURSEL,(WPARAM)selected,0);					SetNumListWnd(selected,nfiles);				}				return FALSE;			case IDM_LISTWND_SEARCH:				{					SendMessage(hwnd,WM_LIST_SEARCH_DIAG,0,0);				}				return FALSE;			default:				break;			}			break;			case WM_VKEYTOITEM:				{					UINT vkey = (UINT)LOWORD(wParam);					int nCaretPos = (int)HIWORD(wParam);					switch(vkey){					case VK_SPACE:					case VK_RETURN:						w32g_send_rc(RC_EXT_JUMP_FILE, nCaretPos);						return -2;					case 0x50:	// VK_P						SendMessage(hMainWnd,WM_COMMAND,MAKEWPARAM(IDM_PREV,0),0);						return -2;					case 0x4e:	// VK_N						SendMessage(hMainWnd,WM_COMMAND,MAKEWPARAM(IDM_NEXT,0),0);						return -2;					case 0x45:	// VK_E						SendMessage(hMainWnd,WM_COMMAND,MAKEWPARAM(IDM_STOP,0),0);						return -2;					case 0x53:	// VK_S						SendMessage(hMainWnd,WM_COMMAND,MAKEWPARAM(IDM_PAUSE,0),0);						return -2;					case VK_ESCAPE:						SendMessage(hListWnd,WM_COMMAND,MAKEWPARAM(0,IDCLOSE),0);						return -2;					case 0x51:	// VK_Q						if(MessageBox(hListWnd,"Quit TiMidity?","TiMidity",MB_ICONQUESTION|MB_YESNO)==IDYES)							SendMessage(hMainWnd,WM_CLOSE,0,0);						return -2;					case VK_BACK:						w32g_send_rc(RC_EXT_DELETE_PLAYLIST, -1);						return -2;					case 0x44:	// VK_D						w32g_send_rc(RC_EXT_DELETE_PLAYLIST, 0);						return -2;					case VK_DELETE:						w32g_send_rc(RC_EXT_ROTATE_PLAYLIST, -1);						return -2;					case VK_INSERT:						w32g_send_rc(RC_EXT_ROTATE_PLAYLIST, 1);						return -2;					case 0x46:	// VK_F						return -2;					case 0x42:	// VK_B						return -2;					case 0x4D:	// VK_M						SendMessage(hListWnd,WM_COMMAND,MAKEWPARAM(IDC_BUTTON_REFINE,0),0);						return -2;					case 0x43:	// VK_C						SendMessage(hListWnd,WM_COMMAND,MAKEWPARAM(IDC_BUTTON_CLEAR,0),0);						return -2;					case 0x55:	// VK_U						SendMessage(hListWnd,WM_COMMAND,MAKEWPARAM(IDC_BUTTON_UNIQ,0),0);						return -2;					case 0x56:	// VK_V						SendMessage(hListWnd,WM_COMMAND,MAKEWPARAM(IDC_BUTTON_DOC,0),0);						return -2;					case 0x57:	// VK_W						SendMessage(hMainWnd,WM_COMMAND,MAKEWPARAM(IDM_WRD,0),0);						return -2;					case VK_F1:					case 0x48:	// VK_H						if ( PlayerLanguage == LANGUAGE_JAPANESE ){						MessageBox(hListWnd,							"僉乕僐儅儞僪\n"							"儕僗僩僂僀儞僪僂僐儅儞僪\n"							"  ESC: 僿儖僾傪暵偠傞      H: 僿儖僾傪弌偡\n"							"  V: 僪僉儏儊儞僩傪尒傞      W: WRD 僂僀儞僪僂傪奐偔\n"							"僾儗僀儎乕僐儅儞僪\n"							"  SPACE/ENTER: 墘憈奐巒    E: 掆巭    S: 堦帪掆巭\n"							"  P: 慜偺嬋    N: 師偺嬋\n"							"僾儗僀儕僗僩憖嶌僐儅儞僪\n"							"  M: MIDI僼傽僀儖埲奜傪嶍彍    U: 廳暋僼傽僀儖傪嶍彍\n"							"  C: 僾儗僀儕僗僩偺僋儕傾\n"							"  D: 僇乕僜儖偺嬋傪嶍彍    BS: 僇乕僜儖偺慜偺嬋傪嶍彍\n"							"  INS: 僇乕僜儖偺嬋傪儕僗僩偺嵟屻偵堏偡 (Push)\n"							"  DEL: 儕僗僩偺嵟屻偺嬋傪僇乕僜儖偺慜偵憓擖 (Pop)\n"							"TiMidity 僐儅儞僪\n"							"  Q: 廔椆\n"							,"僿儖僾", MB_OK);						} else {						MessageBox(hListWnd,							"Usage of key.\n"							"List window command.\n"							"  ESC: Close Help      H: Help\n"							"  V: View Document   W: Open WRD window\n"							"Player command.\n"							"  SPACE/ENTER: PLAY    E: Stop    S: Pause\n"							"  P: Prev    N: Next\n"							"Playlist command.\n"							"  M: Refine playlist    U: Uniq playlist\n"							"  C: Clear playlist\n"							"  D: Remove playlist    BS: Remove previous playlist\n"							"  INS: Push Playlist    DEL: Pop Playlist\n"							"TiMidity command.\n"							"  Q: Quit\n"							,"Help", MB_OK);						}						return -2;					default:						break;			}			return -1;		}	case WM_SIZE:		switch(wParam){		case SIZE_MAXIMIZED:		case SIZE_RESTORED:			{		// 側傫偐堄枴側偔柺搢(^^;;				int x,y,cx,cy;				int maxHeight = 0;				int center, idControl;				HWND hwndChild;				RECT rcParent, rcChild, rcRest;				int nWidth = LOWORD(lParam);				int nHeight = HIWORD(lParam);				GetWindowRect(hwnd,&rcParent);				cx = rcParent.right-rcParent.left;				cy  = rcParent.bottom-rcParent.top;				if(cx < 380)					MoveWindow(hwnd,rcParent.left,rcParent.top,380,cy,TRUE);				if(cy < 200)					MoveWindow(hwnd,rcParent.left,rcParent.top,cx,200,TRUE);				GetClientRect(hwnd,&rcParent);				rcRest.left = rcParent.left; rcRest.right = rcParent.right;				// IDC_EDIT_NUM				idControl = IDC_EDIT_NUM;				hwndChild = GetDlgItem(hwnd,idControl);				GetWindowRect(hwndChild,&rcChild);				cx = rcChild.right-rcChild.left;				cy = rcChild.bottom-rcChild.top;				x = rcParent.left;				y = rcParent.bottom - cy;				MoveWindow(hwndChild,x,y,cx,cy,TRUE);				if(cy>maxHeight) maxHeight = cy;				rcRest.left += cx;				// IDC_BUTTON_DOC				idControl = IDC_BUTTON_DOC;				hwndChild = GetDlgItem(hwnd,idControl);				GetWindowRect(hwndChild,&rcChild);				cx = rcChild.right-rcChild.left;				cy = rcChild.bottom-rcChild.top;				x = rcRest.left + 10;				y = rcParent.bottom - cy;				MoveWindow(hwndChild,x,y,cx,cy,TRUE);				if(cy>maxHeight) maxHeight = cy;				rcRest.left += cx;				// IDC_BUTTON_CLEAR				idControl = IDC_BUTTON_CLEAR;				hwndChild = GetDlgItem(hwnd,idControl);				GetWindowRect(hwndChild,&rcChild);				cx = rcChild.right-rcChild.left;				cy = rcChild.bottom-rcChild.top;				x = rcParent.right - cx - 5;				y = rcParent.bottom - cy ;				MoveWindow(hwndChild,x,y,cx,cy,TRUE);				if(cy>maxHeight) maxHeight = cy;				rcRest.right -= cx + 5;				// IDC_BUTTON_UNIQ				center = rcRest.left + (int)((rcRest.right - rcRest.left)*0.52);				idControl = IDC_BUTTON_UNIQ;				hwndChild = GetDlgItem(hwnd,idControl);				GetWindowRect(hwndChild,&rcChild);				cx = rcChild.right-rcChild.left;				cy = rcChild.bottom-rcChild.top;				x = center - cx;				y = rcParent.bottom - cy;				MoveWindow(hwndChild,x,y,cx,cy,TRUE);				if(cy>maxHeight) maxHeight = cy;				// IDC_BUTTON_REFINE				idControl = IDC_BUTTON_REFINE;				hwndChild = GetDlgItem(hwnd,idControl);				GetWindowRect(hwndChild,&rcChild);				cx = rcChild.right-rcChild.left;				cy = rcChild.bottom-rcChild.top;				x = center + 3;				y = rcParent.bottom - cy;				MoveWindow(hwndChild,x,y,cx,cy,TRUE);				if(cy>maxHeight) maxHeight = cy;				// IDC_LISTBOX_PLAYLIST				idControl = IDC_LISTBOX_PLAYLIST;				hwndChild = GetDlgItem(hwnd,idControl);				cx = rcParent.right - rcParent.left;				cy = rcParent.bottom - rcParent.top - maxHeight - 3;				x  = rcParent.left;				y = rcParent.top;				MoveWindow(hwndChild,x,y,cx,cy,TRUE);				InvalidateRect(hwnd,&rcParent,FALSE);				UpdateWindow(hwnd);				GetWindowRect(hwnd,&rcParent);				ListWndInfo.Width = rcParent.right - rcParent.left;				ListWndInfo.Height = rcParent.bottom - rcParent.top;				break;			}		case SIZE_MINIMIZED:		case SIZE_MAXHIDE:		case SIZE_MAXSHOW:		default:			break;		}		break;	case WM_MOVE://		ListWndInfo.PosX = (int) LOWORD(lParam);//		ListWndInfo.PosY = (int) HIWORD(lParam);		{			RECT rc;			GetWindowRect(hwnd,&rc);			ListWndInfo.PosX = rc.left;			ListWndInfo.PosY = rc.top;		}		break;	// See PreDispatchMessage() in w32g2_main.c	case WM_SYSKEYDOWN:	case WM_KEYDOWN:	{		int nVirtKey = (int)wParam;		switch(nVirtKey){			case VK_ESCAPE:				SendMessage(hwnd,WM_CLOSE,0,0);				break;		}	}		break;	case WM_CLOSE:		ShowSubWindow(hListWnd,0);//		ShowWindow(hListWnd, SW_HIDE);		MainWndUpdateListButton();		break;	case WM_SHOWWINDOW:	{		BOOL fShow = (BOOL)wParam;		if ( fShow ) {			if ( ListSearchWndShow ) {				ShowListSearch();			} else {				HideListSearch();			}		} else {			if ( IsWindowVisible ( hListSearchWnd ) )				ListSearchWndShow = TRUE;			else				ListSearchWndShow = FALSE;			HideListSearch();		}	}		break;	case WM_DROPFILES:		SendMessage(hMainWnd,WM_DROPFILES,wParam,lParam);		return 0;	default:		return FALSE;	}	return FALSE;}static int ListWndInfoReset(HWND hwnd){	memset(&ListWndInfo,0,sizeof(LISTWNDINFO));	ListWndInfo.PosX = - 1;	ListWndInfo.PosY = - 1;	ListWndInfo.Height = 400;	ListWndInfo.Width = 400;	ListWndInfo.hPopupMenu = NULL;	ListWndInfo.hwnd = hwnd;	if ( hwnd != NULL )		ListWndInfo.hwndListBox = GetDlgItem(hwnd,IDC_LISTBOX_PLAYLIST);	strcpy(ListWndInfo.fontNameEN,"Times New Roman");	strcpy(ListWndInfo.fontNameJA,"俵俽 柧挬");	ListWndInfo.fontHeight = 12;	ListWndInfo.fontWidth = 6;	ListWndInfo.fontFlags = FONT_FLAGS_FIXED;	switch(PlayerLanguage){	case LANGUAGE_ENGLISH:		ListWndInfo.fontName = ListWndInfo.fontNameEN;		break;	default:	case LANGUAGE_JAPANESE:		ListWndInfo.fontName = ListWndInfo.fontNameJA;		break;	}	return 0;}static int ListWndInfoApply(void){	RECT rc;	HFONT hFontPre = NULL;	DWORD fdwPitch = (ListWndInfo.fontFlags&FONT_FLAGS_FIXED)?FIXED_PITCH:VARIABLE_PITCH;		DWORD fdwItalic = (ListWndInfo.fontFlags&FONT_FLAGS_ITALIC)?TRUE:FALSE;	HFONT hFont =		CreateFont(ListWndInfo.fontHeight,ListWndInfo.fontWidth,0,0,FW_DONTCARE,fdwItalic,FALSE,FALSE,			DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,	      	fdwPitch | FF_DONTCARE,ListWndInfo.fontName);	if(hFont != NULL){		hFontPre = ListWndInfo.hFontListBox;		ListWndInfo.hFontListBox = hFont;		SendMessage(ListWndInfo.hwndListBox,WM_SETFONT,(WPARAM)ListWndInfo.hFontListBox,(LPARAM)MAKELPARAM(TRUE,0));	}	GetWindowRect(ListWndInfo.hwnd,&rc);	MoveWindow(ListWndInfo.hwnd,rc.left,rc.top,ListWndInfo.Width,ListWndInfo.Height,TRUE);//	InvalidateRect(hwnd,&rc,FALSE);//	UpdateWindow(hwnd);	if(hFontPre!=NULL) CloseHandle(hFontPre);	INISaveListWnd();	return 0;}static int ListWndSetFontListBox(char *fontName, int fontWidth, int fontHeight){	strcpy(ListWndInfo.fontName,fontName);	ListWndInfo.fontWidth = fontWidth;	ListWndInfo.fontHeight = fontHeight;	ListWndInfoApply();	return 0;}void SetNumListWnd(int cursel, int nfiles){	char buff[64];	sprintf(buff,"%04d/%04d",cursel+1,nfiles);	SetDlgItemText(hListWnd,IDC_EDIT_NUM,buff);}#if 0// ***************************************************************************// Tracer WindowBOOL CALLBACK TracerWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam);void InitTracerWnd(HWND hParentWnd){	if (hTracerWnd != NULL) {		DestroyWindow(hTracerWnd);		hTracerWnd = NULL;	}	hTracerWnd = CreateDialog		(hInst,MAKEINTRESOURCE(IDD_DIALOG_TRACER),hParentWnd,TracerWndProc);

⌨️ 快捷键说明

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