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

📄 w32g_subwin3.c

📁 linux上播放midi音乐,但是要一些设置.可网上查找. 软件名称: TiMidity++-2.13.0.tar
💻 C
📖 第 1 页 / 共 5 页
字号:
		if (! get_ch_rc((int) e->v1, &rc, &w32g_tracer_wnd.rc_temper_type))			tracer_temper_type_draw(&rc, (int) e->v1, (int8) e->v2, TRUE);		break;	case CTLE_LYRIC:		break;	case CTLE_REFRESH:		break;	case CTLE_RESET:		TracerWndReset2();#if 0		if ( w32g_tracer_wnd.play_system_mode != play_system_mode ) {#endif			get_head_rc ( &rc, &w32g_tracer_wnd.rc_gm );			tracer_gm_draw ( &rc, play_system_mode == GM_SYSTEM_MODE ? 1 : 0, TRUE );			get_head_rc ( &rc, &w32g_tracer_wnd.rc_gs );			tracer_gs_draw ( &rc, play_system_mode == GS_SYSTEM_MODE ? 1 : 0, TRUE );			get_head_rc ( &rc, &w32g_tracer_wnd.rc_xg );			tracer_xg_draw ( &rc, play_system_mode == XG_SYSTEM_MODE ? 1 : 0, TRUE );#if 0		}#endif		w32g_tracer_wnd.play_system_mode = play_system_mode;		break;	case CTLE_SPEANA:		break;	case CTLE_PAUSE:		break;	case CTLE_MAXVOICES:#if 0		w32g_tracer_wnd.maxvoices = (int)e->v1;#endif		break;	case CTLE_GSLCD:		break;    }}static int get_head_rc ( RECT *rc, RECT *rc_base ){	rc->top = w32g_tracer_wnd.rc_head.top + rc_base->top;	rc->bottom = w32g_tracer_wnd.rc_head.top + rc_base->bottom;	rc->left = w32g_tracer_wnd.rc_head.left + rc_base->left;	rc->right = w32g_tracer_wnd.rc_head.left + rc_base->right;	return 0;}static int get_ch_rc ( int ch, RECT *rc, RECT *rc_base ){	switch (TracerWndInfo.mode) {	default:	case TWI_MODE_1_32CH:		break;	case TWI_MODE_1_16CH:		if ( ch >= 16 )			return -1;		break;	case TWI_MODE_17_32CH:		if ( ch < 16 )			return -1;		ch = ch - 16;		break;	}	rc->top = w32g_tracer_wnd.rc_all_channels.top + 		rc_base->top + ( w32g_tracer_wnd.ch_height + w32g_tracer_wnd.ch_space ) * ( ch - 0 );	rc->bottom = w32g_tracer_wnd.rc_all_channels.top + 		rc_base->bottom + ( w32g_tracer_wnd.ch_height + w32g_tracer_wnd.ch_space ) * ( ch - 0 );	rc->left = w32g_tracer_wnd.rc_all_channels.left + rc_base->left;	rc->right = w32g_tracer_wnd.rc_all_channels.left + rc_base->right;	return 0;}static int notes_view_draw ( RECT *lprc, int note, int vel, int back_draw, int lockflag ){	HDC hdc = w32g_tracer_wnd.hmdc;	RECT rc1;	int note1, left, top;	if (!w32g_tracer_wnd.active)		return 0;	note1 = note / 12;	left = rc1.left = lprc->left + 6 * 7 * note1 + 0;	top = rc1.top = lprc->top + 0;	rc1.right = lprc->left + 6 * 7 * (note1 + 1) - 0;	rc1.bottom = lprc->top + 19 + 1;	if ( back_draw ) {  	if ( lockflag ) TRACER_LOCK ();		BitBlt ( hdc, rc1.left, rc1.top, rc1.right - rc1.left, rc1.bottom - rc1.top,			tracer_bmp.hmdc, tracer_bmp.rc_notes.left, tracer_bmp.rc_notes.top, SRCCOPY );		if ( lockflag ) TRACER_UNLOCK ();		InvalidateRect ( w32g_tracer_wnd.hwnd, &rc1, FALSE );	}	note = note % 12;	switch(note) {		// white keys		case 0: left = 0;			rc1.right = rc1.left + 7;			break;		case 2: rc1.left += left = 6;			rc1.right = rc1.left + 7;			break;		case 4: rc1.left += left = 12;			rc1.right = rc1.left + 7;			break;		case 5: rc1.left += left = 18;			rc1.right = rc1.left + 7;			break;		case 7: rc1.left += left = 24;			rc1.right = rc1.left + 7;			break;		case 9: rc1.left += left = 30;			rc1.right = rc1.left + 7;			break;		case 11: rc1.left += left = 36;			rc1.right = rc1.left + 6;			break;		// black keys		case 1: rc1.left += left = 4;			rc1.right = rc1.left + 5;			break;		case 3: rc1.left += left = 10;			rc1.right = rc1.left + 5;			break;		case 6: rc1.left += left = 22;			rc1.right = rc1.left + 5;			break;		case 8: rc1.left += left = 28;			rc1.right = rc1.left + 5;			break;		case 10: rc1.left += left = 34;			rc1.right = rc1.left + 5;			break;		default: break;	}	if ( lockflag ) TRACER_LOCK ();	if ( vel >= 0 ) {		BitBlt ( hdc, rc1.left, rc1.top, rc1.right - rc1.left, rc1.bottom - rc1.top,			tracer_bmp.hmdc, tracer_bmp.rc_notes_mask[note].left + left, tracer_bmp.rc_notes_mask[note].top, SRCPAINT );		BitBlt ( hdc, rc1.left, rc1.top, rc1.right - rc1.left, rc1.bottom - rc1.top,			tracer_bmp.hmdc, tracer_bmp.rc_note_on[note].left + left, tracer_bmp.rc_note_on[note].top, SRCAND );	} else if ( vel  == TRACER_VOICE_SUSTAINED ) {		BitBlt ( hdc, rc1.left, rc1.top, rc1.right - rc1.left, rc1.bottom - rc1.top,			tracer_bmp.hmdc, tracer_bmp.rc_notes_mask[note].left + left, tracer_bmp.rc_notes_mask[note].top, SRCPAINT );		BitBlt ( hdc, rc1.left, rc1.top, rc1.right - rc1.left, rc1.bottom - rc1.top,			tracer_bmp.hmdc, tracer_bmp.rc_note_sustain[note].left + left, tracer_bmp.rc_note_sustain[note].top, SRCAND );	} else {		BitBlt ( hdc, rc1.left, rc1.top, rc1.right - rc1.left, rc1.bottom - rc1.top,			tracer_bmp.hmdc, tracer_bmp.rc_notes_mask[note].left + left, tracer_bmp.rc_notes_mask[note].top, SRCPAINT );		BitBlt ( hdc, rc1.left, rc1.top, rc1.right - rc1.left, rc1.bottom - rc1.top,			tracer_bmp.hmdc, tracer_bmp.rc_note[note].left + left, tracer_bmp.rc_note[note].top, SRCAND );	}	if ( lockflag ) TRACER_UNLOCK ();	InvalidateRect ( w32g_tracer_wnd.hwnd, &rc1, FALSE );	return 0;}static int tracer_ch_number_draw(int ch, int mute, int lockflag){	RECT rc;	char buff[3];		if (mute != CTL_STATUS_UPDATE) {		if (((IS_SET_CHANNELMASK(				w32g_tracer_wnd.channel_mute, ch)) ? 1 : 0) == mute)			return 0;		if (mute)			SET_CHANNELMASK(w32g_tracer_wnd.channel_mute, ch);		else			UNSET_CHANNELMASK(w32g_tracer_wnd.channel_mute, ch);	} else		mute = (IS_SET_CHANNELMASK(				w32g_tracer_wnd.channel_mute, ch)) ? 1 : 0;	if (IS_SET_CHANNELMASK(w32g_tracer_wnd.quietchannels, ch))		return 0;	if (get_ch_rc(ch, &rc, &w32g_tracer_wnd.rc_channel_top) == 0) {		sprintf(buff, "%02d", ch + 1);		cheap_string_view_draw(&rc, buff, C_TEXT_FORE,				(mute) ? C_TEXT_BACK_DARK : C_TEXT_BACK,				CSV_CENTER, lockflag);	}	return 0;}static int tracer_ch_program_draw ( int ch, int bank, int program, char *instrument, int mapID, int lockflag ){	RECT rc;	char buff[64];	char *p_buff;	if ( bank >= 0 ) {		w32g_tracer_wnd.bank[ch] = bank;	} else {		if ( ISDRUMCHANNEL(ch) )			bank = w32g_tracer_wnd.bank[ch] = 128;		else			bank = w32g_tracer_wnd.bank[ch] = channel[ch].bank;	}	if ( bank == 128 ) {		if ( get_ch_rc ( ch, &rc, &w32g_tracer_wnd.rc_bank ) == 0 ) {			sprintf ( buff, "drum");			cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, lockflag );		}	} else {		if ( get_ch_rc ( ch, &rc, &w32g_tracer_wnd.rc_bank ) == 0 ) {			sprintf ( buff, "%03d", bank );			cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, lockflag );		}	}	if ( program >= 0 ) {		w32g_tracer_wnd.program[ch] = program;	} else {		program = w32g_tracer_wnd.program[ch] = channel[ch].program;	}	if ( get_ch_rc ( ch, &rc, &w32g_tracer_wnd.rc_program ) == 0 ) {		sprintf ( buff, "%03d", program );		cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, lockflag );	}	if ( instrument == NULL ) {instrument = " ----";}	strncpy ( w32g_tracer_wnd.instrument[ch], (char *)instrument, 250 );	w32g_tracer_wnd.instrument[ch][250] = '\0';	if ( w32g_tracer_wnd.instrument[ch][0] != ' ' ) {		char buff[255];		strncpy ( buff, w32g_tracer_wnd.instrument[ch], 250 );		buff[250] = '\0';		w32g_tracer_wnd.instrument[ch][0] = ' ';		w32g_tracer_wnd.instrument[ch][1] = '\0';		strcat ( w32g_tracer_wnd.instrument[ch], buff );	}	if ( get_ch_rc ( ch, &rc, &w32g_tracer_wnd.rc_instrument ) == 0 )		cheap_string_view_draw ( &rc, w32g_tracer_wnd.instrument[ch], C_TEXT_FORE, C_TEXT_BACK, CSV_LEFT, lockflag );	if ( mapID >= 0 ) {		w32g_tracer_wnd.mapID[ch] = mapID;	} else {		mapID = w32g_tracer_wnd.mapID[ch] = channel[ch].mapID;	}	switch ( mapID ) {	default:    case INST_NO_MAP:    case NUM_INST_MAP:		p_buff = "----";		break;    case SC_55_TONE_MAP:		p_buff = "55 T";		break;    case SC_55_DRUM_MAP:		p_buff = "55 D";		break;    case SC_88_TONE_MAP:		p_buff = "88 T";		break;    case SC_88_DRUM_MAP:		p_buff = "88 D";		break;    case SC_88PRO_TONE_MAP:		p_buff = "88Pro T";		break;    case SC_88PRO_DRUM_MAP:		p_buff = "88Pro D";		break;    case SC_8850_TONE_MAP:		p_buff = "8850 T";		break;    case SC_8850_DRUM_MAP:		p_buff = "8850 D";		break;    case XG_NORMAL_MAP:		p_buff = "XG";		break;    case XG_SFX64_MAP:		p_buff = "XG SFX64";		break;    case XG_SFX126_MAP:		p_buff = "XG SFX126";		break;    case XG_DRUM_MAP:		p_buff = "XG D";		break;    case GM2_TONE_MAP:		p_buff = "GM2 T";		break;    case GM2_DRUM_MAP:		p_buff = "GM2 D";	}	if ( get_ch_rc ( ch, &rc, &w32g_tracer_wnd.rc_inst_map ) == 0 )		cheap_string_view_draw ( &rc, p_buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, lockflag );	return 0;}static int effect_view_border_draw ( RECT *lprc, int lockflag){	HDC hdc;	COLORREF base = RGB(128, 128, 128);	HPEN hPen1 = NULL;	HPEN hPen3 = NULL;	HPEN hOldPen = NULL;	if ( !w32g_tracer_wnd.active )		return 0;	hdc = w32g_tracer_wnd.hmdc;	hPen1 = CreatePen(PS_SOLID, 1, base);	hPen3 = CreatePen(PS_SOLID, 1, base);	if ( lockflag ) TRACER_LOCK ();	hOldPen= (HPEN)SelectObject(hdc,GetStockObject(NULL_PEN));	// 塃慄	SelectObject(hdc, hPen3);	MoveToEx(hdc, lprc->right, lprc->top - 1, NULL);	LineTo(hdc, lprc->right, lprc->bottom + 1);	// 壓慄	SelectObject(hdc, hPen1);	MoveToEx(hdc, lprc->left - 1, lprc->bottom, NULL);	LineTo(hdc, lprc->right + 1, lprc->bottom);	SelectObject(hdc, hOldPen);	if ( lockflag ) TRACER_UNLOCK ();	DeleteObject (hPen1);	DeleteObject (hPen3);	return 0;}static int tracer_velocity_draw ( RECT *lprc, int vol, int max, int lockflag ){	return tracer_velocity_draw_ex ( lprc, vol, -1, max, lockflag );}static int tracer_velocity_draw_ex ( RECT *lprc, int vol, int vol_old, int max, int lockflag ){	HDC hdc;	const int view_max = 30, div = 17;	RECT rc;	if ( !w32g_tracer_wnd.active )		return 0;	hdc = w32g_tracer_wnd.hmdc;	vol /= div;	if ( vol_old < 0 ) vol_old = max;	vol_old /= div;	if(vol >= view_max) {vol = view_max;}	if(vol_old >= view_max) {vol_old = view_max;}		if ( lockflag ) TRACER_LOCK ();	// 昁梫側偩偗儀儘僔僥傿僶乕偺攚宨傪昤夋//	BitBlt ( hdc, lprc->left +  vol, lprc->top, lprc->right - lprc->left -  vol, lprc->bottom - lprc->top,	BitBlt ( hdc, lprc->left +  vol, lprc->top, vol_old - vol, lprc->bottom - lprc->top,		tracer_bmp.hmdc, tracer_bmp.rc_velocity[0].left + vol, tracer_bmp.rc_velocity[0].top, SRCCOPY );	// 昁梫側偩偗儀儘僔僥傿僶乕傪昤夋	BitBlt ( hdc, lprc->left, lprc->top, vol, lprc->bottom - lprc->top,		tracer_bmp.hmdc, tracer_bmp.rc_velocity[0].left, tracer_bmp.rc_velocity[0].top + 19 + 1, SRCCOPY );	SetRect ( &rc, lprc->left, lprc->top, lprc->left + (( vol_old > vol ) ? vol_old : vol), lprc->bottom);	effect_view_border_draw (lprc, lockflag);	InvalidateRect ( w32g_tracer_wnd.hwnd, &rc, FALSE );	if ( lockflag ) TRACER_UNLOCK ();	return 0;}static int tracer_volume_draw ( RECT *lprc, int vol, int max, int lockflag ){	HDC hdc; 	const int view_max = 20, div = 7;	if ( !w32g_tracer_wnd.active )		return 0;	hdc = w32g_tracer_wnd.hmdc;	vol /= div;	if(vol >= view_max) {vol = view_max;}		if ( lockflag ) TRACER_LOCK ();	// 昁梫側偩偗攚宨傪昤夋	BitBlt ( hdc, lprc->left +  vol, lprc->top, lprc->right - lprc->left -  vol, lprc->bottom - lprc->top,		tracer_bmp.hmdc, tracer_bmp.rc_volume.left, tracer_bmp.rc_volume.top, SRCCOPY );	// 昁梫側偩偗昤夋	BitBlt ( hdc, lprc->left, lprc->top, vol, lprc->bottom - lprc->top,		tracer_bmp.hmdc, tracer_bmp.rc_volume.left, tracer_bmp.rc_volume.top + 9 + 1, SRCCOPY );

⌨️ 快捷键说明

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